Python 修改原始文件指针时出现csv读取器错误

Python 修改原始文件指针时出现csv读取器错误,python,csv,Python,Csv,在使用csv模块读取csv文件时,我发现了一个让我困惑的问题。如果在创建读卡器对象和打印其行之间,我使用文件指针执行某些操作,打印(行)不打印任何内容,如果我注释掉循环文件,则按预期打印行,即csv文件中的数据 显然,访问文件ptr对reader对象有副作用,但我不明白为什么会出现这种情况 读取器对象中的数据是否应该独立于调用csv.reader()后读取的文件 是的,csv.reader()。您必须“倒带”文件: for line in f: num_lines += 1 f.see

在使用csv模块读取csv文件时,我发现了一个让我困惑的问题。如果在创建读卡器对象和打印其行之间,我使用文件指针执行某些操作,打印(行)不打印任何内容,如果我注释掉循环文件,则按预期打印行,即csv文件中的数据

显然,访问文件ptr对reader对象有副作用,但我不明白为什么会出现这种情况

读取器对象中的数据是否应该独立于调用csv.reader()后读取的文件

是的,
csv.reader()。您必须“倒带”文件:

for line in f:
    num_lines += 1

f.seek(0)

for row in reader:
    print(row)

啊,好吧-这是一件标准的事情吗?它肯定违反了我的“最小惊喜原则”,但也许它不应该这样做?@bph:你认为这会是什么表现?您给了读取器一个要从中读取的文件,但该文件对象不关心由谁读取;如果你直接读,指针也会前进。
csv.reader()
对象不关心文件对象下一步要读取的位置。我假设reader对象将创建文件中数据的单独副本,并且从csv.reader()开始被称为读卡器对象将独立于包含数据的文件-也许这是低效的?
for line in f:
    num_lines += 1

f.seek(0)

for row in reader:
    print(row)