Python CSV读取器控制流程

时间:2016-06-23 19:24:18

标签: python csv iterator

我很惊讶在Python的CSV阅读器中看到这个功能。

with open(sys.argv[1]) as csvfile:
    reader = csv.DictReader(csvfile)
    for i in range(3):
        sys.stdout.write('A ')
        for row in reader:
            sys.stdout.write('B ')

#sys.argv[1] is a 3 row csv file

我通常希望像这样的代码打印出类似的东西:

A B B B A B B B A B B

但我得到了:

A B B A A

这似乎违反了for循环的基本流控制属性,因为我理解它们。我主要怀疑这个迭代器有一个不寻常的属性导致这种行为。任何解释都会有所帮助,非常感谢。谢谢。

1 个答案:

答案 0 :(得分:2)

来自reader的{​​{1}}对象是一个生成器。它在外部csv.DictReader的第一次迭代中耗尽。因此,在以下迭代中,内部for循环没有要执行循环的项。