有没有办法在 python 中嵌套两个文件输入?
对于 fileX 中的每一行,我需要扫描 fileY 的所有行。
我尝试了这个:
for line in fileinput.input('fileX'):
do.fun.stuff(line)
for element in fileinput.input('fileY'):
process(element,line)
但是我得到:
RuntimeError: input()已经激活
我想我必须指定fileinput的第二个实例与第一个实例不同。
For each line in fileX I need to scan all lines of fileY.
I tried this:
for line in fileinput.input('fileX'):
do.fun.stuff(line)
for element in fileinput.input('fileY'):
process(element,line)
But I get:
RuntimeError: input() already active
I guess I have to specify that the second instance of fileinput is different from the first one.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这不起作用,因为
fileinput.input()
创建一个全局实例,因此您不能以您尝试的方式调用它两次。为什么不简单地:
This doesn't work since
fileinput.input()
creates a global instance, so you can't call it twice in the manner that you're trying to.Why not simply:
以下是对 @CatPlusPlus 建议的解决方案的明确答案:
Here is the explicit answer to the solution suggested by @CatPlusPlus:
fileinput.input
使用fileinput.FileInput
的全局共享实例。直接使用该类,创建两个实例,它应该可以工作。fileinput.input
uses a global shared instance offileinput.FileInput
. Use that class directly, creating two instances, and it should work.使用 fileinput,您可以轻松地将多个文件作为一个单元进行迭代,但它似乎在这里没有给您带来任何好处。分别迭代文件的内容。一种不错的方法是使用 itertools.product:
Using fileinput, you can iterate over multiple files easily as a unit, but it doesn't seem to gain you anything here. Iterate over the contents of the files separately. One nice approach is using
itertools.product
: