为什么两个“for循环”都不起作用?

时间:2017-03-30 22:28:23

标签: python

import csv

def csv_reader(file_obj):      
    reader = csv.reader(file_obj)
    # for row in reader:
        # print(" ".join(row))

    reader_2 = csv.DictReader(file_obj, delimiter=",")
    for row_2 in reader_2:
        print(row_2)

csv_path = "data.csv"
with open(csv_path, "r") as f_obj:
    csv_reader(f_obj)

我无法弄清楚为什么第二个“for循环”仅在第一个“for循环”被注释掉时才打印任何文本。

2 个答案:

答案 0 :(得分:4)

CSV阅读器已经消耗了您的文件。 在再次使用之前调用file_obj.seek(0)应该可以解决问题。

或者,打开(然后关闭)每个操作的文件也可以。

答案 1 :(得分:2)

这是因为您将同一文件处理程序传递给两个csv读取器对象。迭代一次之后,您必须手动执行file_obj.seek(0)才能使其按预期工作,否则它就像一个空文件。