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

标签 python file input

我正在尝试读取 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/

相关文章:

python - 如何将 line.set_data 用于 matplotlib 中的二维数组数据?

python - 使用 Django Rest Framework 时如何访问请求正文并避免获取 RawPostDataException

python - 如何将 Python 原生数据结构存储到文件中或从文件中检索?

python - 凯撒密码 仅加密一个字母而不是整个字符串

python - 如何自动计算集群数量?

javascript - 通过 jquery 下载文件并重定向

php - 获取文件的字符编码而不将整个文件读入内存

c# - 获取拖入 Windows Forms 窗体中的文件的路径

google-chrome - 在以编程方式更改内容后,Chrome 中的输入元素无法正常撤消

javascript - 添加新字符并设置输入位置