我很惊讶在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循环的基本流控制属性,因为我理解它们。我主要怀疑这个迭代器有一个不寻常的属性导致这种行为。任何解释都会有所帮助,非常感谢。谢谢。
答案 0 :(得分:2)
来自reader
的{{1}}对象是一个生成器。它在外部csv.DictReader
的第一次迭代中耗尽。因此,在以下迭代中,内部for
循环没有要执行循环的项。