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



我有两个从文件中读取的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的新手,所以答案需要保持一些基本。

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

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

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