gpt4 book ai didi

python - python文件输入模块中的 "input() already active"是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:46 24 4
gpt4 key购买 nike

我正在尝试读取 text.txt 文件中的第二行:

import fileinput

x = 0
for line in fileinput.input([os.path.expandvars("$MYPATH/text.txt")]):
if x < 3:
x += 1
if x == 2:
mydate = line
fileinput.close()
print "mydate : ", mydate

但是我得到一个错误:

Traceback (most recent call last):
File "/tmp/tmpT8RvF_.py", line 4, in <module>
for line in fileinput.input([os.path.expandvars("$MYPATH/text.txt")]):
File "/usr/lib64/python2.6/fileinput.py", line 102, in input
raise RuntimeError, "input() already active"
RuntimeError: input() already active

上面有什么问题吗?

最佳答案

要从 fileinput.input() 迭代中获取第二行,只需调用 .next() 两次:

finput = fileinput.input([os.path.expandvars("$MYPATH/text.txt")])
finput.next() # skip first line
mydate = finput.next() # store second line.

您还可以使用 itertools.islice() function仅选择第二行:

import itertools

finput = fileinput.input([os.path.expandvars("$MYPATH/text.txt")])
mydate = itertools.islice(finput.next(), 1, 2).next() # store second line.

这两种方法都确保从输入中读取的行数不超过两行。

.input() 函数返回一个全局单例对象,其他函数对其进行操作。您一次只能运行一个 fileinput.input() 实例。确保在打开新的 input() 对象之前调用了 fileinput.close()

您应该使用 fileinput.FileInput() 类来创建多个实例。

关于python - python文件输入模块中的 "input() already active"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799880/

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