Python:“infile”for循环不会第二次运行

时间:2018-05-17 07:41:41

标签: python

我有两个从文件中读取的for循环。它们都完全相同,除了它们内部的if语句。

infile = open("australianFatalities.csv", "r")
for line in infile:
    words = line.split(",") 
    crash_id = words[0]
    crash_state = words[1]
    if crash_state == "NSW":
        print(crash_id)

for line in infile:
    words = line.split(",") 
    crash_id = words[0]
    crash_state = words[1]
    if crash_state == "NSW":
        print(crash_state)

问题是第一个循环运行,但第二个循环不运行。我知道这是因为会打印crash_id,但crash_state不会。如果我切换crash_idcrash_state,状态将打印但ID不会。 此代码已与我的主项目隔离,但显示相同的问题。

为什么循环不会第二次运行?它与读取文件有关吗?

我是Python的新手,所以答案需要保持一定的基础。

1 个答案:

答案 0 :(得分:0)

在python中迭代文件对象时,每次迭代后当前位置都会发生变化。

因此,当您尝试再次循环文件对象时,光标位于文件末尾。

您可以通过再次打开文件或更好地解决此问题:在第二个循环之前调用fd.seek(0)