修改原文件指针时CSV读取器出错

0 投票
1 回答
501 浏览
提问于 2025-04-18 11:51

我遇到了一个让我困惑的问题,关于使用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)

撰写回答