在Python中能嵌套两个fileinput吗?

2 投票
4 回答
1094 浏览
提问于 2025-04-17 04:09

我需要对fileX中的每一行,去检查fileY中的所有行。

我试过这样做:

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

但是我遇到了这个错误:

运行时错误:input()已经在使用中

我想我需要说明第二次使用fileinput的时候,和第一次是不一样的。

4 个回答

2

fileinput.input 这个东西使用了一个全局共享的 fileinput.FileInput 实例。如果你直接使用这个类,并创建两个不同的实例,那就应该可以正常工作了。

3

这里是@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)
3

这个方法不行,因为 fileinput.input() 会创建一个全局实例,所以你不能像你现在这样调用它两次。

那为什么不简单点呢:

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

撰写回答