Python csv.reader:如何返回文件顶部?

时间:2009-01-10 21:04:49

标签: python csv

当我使用csv.reader移动文件时,如何返回文件顶部。如果我用普通文件这样做,我可以做一些像“file.seek(0)”这样的事情。 csv模块有什么类似的东西吗?

提前致谢;)

3 个答案:

答案 0 :(得分:69)

您可以直接搜索文件。例如:

>>> f = open("csv.txt")
>>> c = csv.reader(f)
>>> for row in c: print row
['1', '2', '3']
['4', '5', '6']
>>> f.seek(0)
>>> for row in c: print row   # again
['1', '2', '3']
['4', '5', '6']

答案 1 :(得分:13)

您仍然可以使用file.seek(0)。例如,请查看以下内容:

import csv
file_handle = open("somefile.csv", "r")
reader = csv.reader(file_handle)
# Do stuff with reader
file_handle.seek(0)
# Do more stuff with reader as it is back at the beginning now

这应该可行,因为csv.reader正在使用相同的。

答案 2 :(得分:0)

由于当前的csv.reader,我发现csv.DictReaderline_num的使用有点困难。初读的making a list效果很好:

>>> import csv
>>> f = open('csv.txt')
>>> lines = list( csv.reader(f) ) # <-- list from csvReader
>>>
>>> for line in lines:
...  print(line)
['1', '2', '3']
['4', '5', '6']
>>>
>>> for line in lines:
...  print(line)
['1', '2', '3']
['4', '5', '6']
>>>
>>>lines[1]
['4', '5', '6']

这捕获了dictReader使用的optional first row,但是使您可以一次又一次地使用列表,甚至可以检查单个行。