修改原文件指针时CSV读取器出错
我遇到了一个让我困惑的问题,关于使用csv模块读取csv文件的过程。具体来说,在创建读取器对象和打印它的行之间,如果我对文件指针做了一些操作,打印行的时候就什么都不显示。如果我把处理文件的循环注释掉,那么行就会正常打印出来,也就是csv文件里的数据。
显然,访问文件指针对读取器对象产生了影响,但我不明白为什么会这样。
难道在调用csv.reader()之后,读取器对象里的数据不应该和它读取的文件是独立的吗?
import csv
num_lines = 0
with open("test.csv", 'r') as f:
reader = csv.reader(f)
for line in f:
num_lines += 1
for row in reader:
print(row)
1 个回答
2
没错,csv.reader()
这个对象需要依赖于文件对象在文件中的位置。你需要把文件“倒回去”:
for line in f:
num_lines += 1
f.seek(0)
for row in reader:
print(row)