gpt4 book ai didi

python - 运行时错误 : input() already active - file loop

转载 作者:行者123 更新时间:2023-12-04 23:51:19 47 4
gpt4 key购买 nike

通读文件输入上的文档,但我在某处犯了一个基本错误,我希望有人能指出我的错误。

循环遍历文件中的列表:

finput = fileinput.input('file.txt')
for line in finput:
// do something
finput.next()
else:
finput.close()

在第二个循环中它抛出
 raise RuntimeError, "input() already active"

认为 .next() 是移到第二行的正确函数

最佳答案

当您尝试遍历由 fileinput.input 返回的同一文件的重新打开的实例时,会引发该错误。而前一个实例由 fileinput.input 返回仍然没有用尽或明确关闭。因此,fileinput.input 的多个实例不能同时使用。

来自 fileinput.input :

The instance will be used as global state for the functions of this module, and is also returned to use during iteration.


import fileinput
finput = fileinput.input('abc1')
finput.next()
finput = fileinput.input('abc1')
finput.next()

输出:
Traceback (most recent call last):
File "so.py", line 5, in <module>
finput = fileinput.input('abc1')
File "/usr/lib/python2.7/fileinput.py", line 101, in input
raise RuntimeError, "input() already active"
RuntimeError: input() already active

您可以使用 fileinput.FileInput 一次使用多个实例。这段代码工作正常:
import fileinput
finput = fileinput.FileInput('abc1')
finput.next()
finput = fileinput.FileInput('abc1')
finput.next()

请注意,正如@Tim Pietzcker 在他的回答中已经指出的那样, fileinput 上的 for 循环实例已经一次返回一行(在你的代码中变量 line 是实际的行),所以, .next那里不需要电话。并调用 .next在该循环内可能会引发 StopIteration文件对象耗尽时出错。
import fileinput
finput = fileinput.input('abc1')
for line in finput:
print line, #current line returned by the for-loop
print finput.next() #Fetch the next line manually.

关于python - 运行时错误 : input() already active - file loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21443601/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com