有没有办法在python中嵌套两个fileinput?

有没有办法在python中嵌套两个fileinput?,python,file-io,Python,File Io,对于fileX中的每一行,我需要扫描fileY的所有行 我试过这个: for line in fileinput.input('fileX'): do.fun.stuff(line) for element in fileinput.input('fileY'): process(element,line) 但我得到: 运行时错误:输入()已处于活动状态 我想我必须指定fileinput的第二个实例与第一个实例不同。fileinput.i

对于fileX中的每一行,我需要扫描fileY的所有行

我试过这个:

for line in fileinput.input('fileX'):
    do.fun.stuff(line)
          for element in fileinput.input('fileY'):
              process(element,line)
但我得到:

运行时错误:输入()已处于活动状态


我想我必须指定fileinput的第二个实例与第一个实例不同。

fileinput.input
使用了
fileinput.fileinput的全局共享实例。直接使用该类,创建两个实例,它应该可以工作。

这不起作用,因为
fileinput.input()
,所以您不能以尝试的方式调用它两次

为什么不简单地:

for line in open('fileX'):
    do.fun.stuff(line)
    for element in open('fileY'):
        process(element,line)

使用fileinput,您可以作为一个单元轻松地迭代多个文件,但在这里似乎没有任何好处。分别迭代文件的内容。一种很好的方法是使用
itertools.product

import itertools
with open('fileX', 'r') as f1:
    with open('fileY', 'r') as f2:
        for (line, element) in itertools.product(f1, f2):
            process(element, line)

以下是@CatPlusPlus建议的明确答案:

import fileinput
fileX = fileinput.FileInput(files='fileX')
fileY = fileinput.FileInput(files='fileY')
for line in fileX:
    do.fun.stuff(line)
          for element in fileY:
              process(element,line)

我对python不是很精通,出于某种原因,我的理解是fileinput对于大型文件来说比使用open()更有效。谢谢@aix@pedrosaurio:
fileinput
是为一个非常特定的用例而设计的,从我所看到的来看,这个用例在这里并不适用。我不希望它比使用
open
更快。