我有两个从文件中读取的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_id
并crash_state
,状态将打印,但 ID 不会。 此代码已与我的主项目隔离,但显示相同的问题。
为什么循环不会第二次运行?它与读取文件有关吗?
我是Python的新手,所以答案需要保持一些基本。
当您在 python 中迭代文件对象时,每次迭代后当前位置都会发生变化。
因此,当您尝试再次循环访问文件对象时,光标位于文件的末尾。
您可以通过再次打开文件来解决此问题,或者更好的方法是:在第二个循环之前调用fd.seek(0)
。