在我的脚本中计算max_conc时,下一个for循环不起作用,除非我把它放在读者之后。但这样做,max_conc不再起作用了。
with open ('outfile.csv', 'r') as infile:
reader = csv.reader(infile)
max_conc = max(cols[1] for cols in reader)
print max_conc
for row in reader:
print row
重新打开输入文件是唯一的解决方案吗?
答案 0 :(得分:2)
因为你打电话的时候:
max(cols[1] for cols in reader)
你耗尽了迭代器,你无法再次遍历它。但您可以使用seek
返回文件的开头:
infile.seek(0)
或者,您可以将文件的副本存储在内存中:
lines = infile.readlines()
max_conc = max(cols[1] for cols in lines)
另一种方式,正如@Lyncha建议的那样,循环遍历文件的列表副本:
lines = list(reader)
这是一个小例子:
>>> f = open('test.txt')
>>> f.read()
'a\nb\nc\nd\ne\nf\ng'
>>> f.read()
'' #whoops, iterator is exhausted
>>> f.seek(0)
>>> f.read()
'a\nb\nc\nd\ne\nf\ng'