Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是;输入()已激活";在python文件输入模块中是什么意思?_Python_File_Input - Fatal编程技术网

什么是;输入()已激活";在python文件输入模块中是什么意思?

什么是;输入()已激活";在python文件输入模块中是什么意思?,python,file,input,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 : ", m

我正在尝试读取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 
导入文件输入
x=0
对于fileinput.input([os.path.expandvars($MYPATH/text.txt”)]中的行:
如果x<3:
x+=1
如果x==2:
mydate=行
fileinput.close()
打印“我的日期:”,我的日期
但我有一个错误:

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
回溯(最近一次呼叫最后一次):
文件“/tmp/tmpT8RvF_uuz.py”,第4行,在
对于fileinput.input([os.path.expandvars($MYPATH/text.txt”)]中的行:
文件“/usr/lib64/python2.6/fileinput.py”,第102行,输入
引发运行时错误,“输入()已处于活动状态”
RuntimeError:输入()已处于活动状态

上面怎么了?

要从
文件input.input()
iterable获取第二行,只需调用
.next()
两次:

finput = fileinput.input([os.path.expandvars("$MYPATH/text.txt")])
finput.next()  # skip first line
mydate = finput.next()  # store second line.
您还可以使用仅选择第二行:

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的方法是:

with open('text.txt', 'r') as file:
    file.next() #as Martjin stated in his response, skips 1st line
    mydate = file.next()
在本例中,仅从文件中读取2行,并自动关闭

关于你的确切问题:
我的python是python 2.6.5(r265:79063,2010年4月16日,13:57:41),它不会为您的示例引发该错误。出现该错误是因为您在重新打开输入之前没有使用所有行。

该文件非常大,我只需要阅读第二行。您的上述建议是否适用于此?我尝试了第一种方法,但仍然出现“input()已处于活动状态”错误。@alwbtc:两种方法的读取量仅足以提供前两行(使用读取缓冲区)。这两个方法都不会读取整个文件。我尝试了fileinput.fileinput()而不是fileinput.input(),结果成功了。好的,但是如果使用第一个方法fileinput.input(),我只创建了一个实例。为什么我仍然收到“input()已激活”错误?我不想消耗所有行,文本文件非常大。我声明只从文件中读取前2行,无论文件的长度如何,处理总是最多2行