修改原始文件指针时csv reader错误

时间:2014-07-02 12:37:34

标签: python csv

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

明确访问文件ptr对读者对象有副作用,但我不明白为什么会出现这种情况?

在调用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 个答案:

答案 0 :(得分:2)

是的,csv.reader()对象依赖于维护文件中位置的基础文件对象。你必须'回放'文件:

for line in f:
    num_lines += 1

f.seek(0)

for row in reader:
    print(row)