当我使用csv.reader移动文件时,如何返回文件顶部。如果我用普通文件这样做,我可以做一些像“file.seek(0)”这样的事情。 csv模块有什么类似的东西吗?
提前致谢;)
答案 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.DictReader
和line_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,但是使您可以一次又一次地使用列表,甚至可以检查单个行。