Python 修改原始文件指针时出现csv读取器错误
在使用csv模块读取csv文件时,我发现了一个让我困惑的问题。如果在创建读卡器对象和打印其行之间,我使用文件指针执行某些操作,打印(行)不打印任何内容,如果我注释掉循环文件,则按预期打印行,即csv文件中的数据 显然,访问文件ptr对reader对象有副作用,但我不明白为什么会出现这种情况 读取器对象中的数据是否应该独立于调用csv.reader()后读取的文件 是的,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.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)