我的目录中有100多个文件,每个文件有1000多行,格式如下:
name,sex,number
例如:
xyz,M,234
我只需要在第2行出现特定名称并且sex为“F”的情况下获取这些文件的数字字段的总和。但是在检查了条件之后,我的代码给了我目录中所有文件的数字总和字段。这是我的密码:
total = []
for filename in os.listdir(direc):
result = 0
if filename.endswith('.txt'):
file = open(direc + '/' + filename, 'r')
for i, line in enumerate(file, 1):
line = line.strip()
name, sex, count = line.split(',')
if 'xyz' == name and sex == 'F' and i == 2:
for line in file:
line = line.strip()
name, sex, count = line.split(',')
if sex == 'F':
result += int(count)
total.append(result)
我的代码有什么问题。我只需要我的第三列性的总和='F'只有那些文件在哪里
'xyz' == name and sex == 'F' and i == 2
好吧,首先,你在同一个文件上迭代两次,这肯定会把结果搞砸。你知道吗
以及
这里的部分问题是,file对象不是一个全部在内存中的列表,而是一个迭代器,一旦你看到一行,它就消失了。只要用一个列表
lines = list(file)
将所有行拉入内存,检查第二行是否符合您的条件'xyz', 'F' == lines[1].split(',')[:2]
,然后对整个列表执行操作(如果是真的)。你知道吗对于单个文件:
相关问题 更多 >
编程相关推荐