所以我目前得到一个看起来像这样的 .csv 文件:
HostType,Number
Windows_Desktop,84
Linux_Desktop,12
Windows_Desktop,60
Linux_Desktop,7
我正在尝试编写一个根据总值执行功能的脚本。所以我有两个全局变量:
WINDOWS = 0
LINUX = 0
我正在努力使该函数将两个 Window_Desktop 数字加在一起,并将 Linux_Desktop 数字加在一起。所以像..
def count_function():
global WINDOWS
global LINUX
count_file = open('counts.csv', 'rb')
reader = csv.reader(count_file)
WINDOWS = float(row[2]) + float(otherrow[2])
LINUX = float(row[2]) + float(otherrow[2])
(我知道这是非常错误的语法,只是我想弄清楚的一个简短示例) 但是我不知道如何指定要加在一起的列和行。他们总是在同一个地方。 Windows 总是 2 和 4,Linux 总是 3 和 5。所以我不需要以任何方式对它们进行正则表达式。我只是想弄清楚如何做第 2 行第 2 列 + 第 4 行第 2 列。
基本上,我最终会尝试做类似的事情:
if WINDOWS < 80
some_function()
虽然我已经弄清楚了那部分,但它让数字相加,尽管我敲了多少次脑袋,但我似乎还是弄不明白。
请您参考如下方法:
您需要通过分析第一列的内容来确定您正在收集的东西的类型。由于您正在收集 Windows 和 Linux 总计,因此您可以使用字典来收集这些数据。
试试这个版本:
import csv
from collections import defaultdict
data = defaultdict(float) # this just means, the default value of a key
# that doesn't exit is a float
with open('yourfile.csv') as f:
reader = csv.reader(f)
next(f) # This will skip the header
for row in reader:
data[row[0].split('_')[0].strip()] += float(row[1])
if data['Windows'] < 80:
print('Do stuff')
for key, value in data.iteritems():
print('Value for {} is {}'.format(key, value))
