Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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:将两个文件作为一个fileobject打开_Python - Fatal编程技术网

python:将两个文件作为一个fileobject打开

python:将两个文件作为一个fileobject打开,python,Python,我有两个文件:头文件和正文文件。我用图书馆来阅读整件事。我可以使用“fileinput.input”创建一个fileinput对象,并将其交给读取数据的库。问题是FileInput对象没有库所期望的“.read”属性 我需要一个带有.read的FileObject,就像将两个文件作为一个文件读取一样 对现有的解决办法有什么想法吗?是的,我知道我可以一起构建自己的小类或cat文件。只是想知道是否有我从未听说过的神奇的FileObject joiner。如果您的库使用.read()读取文件,那么将多

我有两个文件:头文件和正文文件。我用图书馆来阅读整件事。我可以使用“fileinput.input”创建一个fileinput对象,并将其交给读取数据的库。问题是FileInput对象没有库所期望的“.read”属性

我需要一个带有.read的FileObject,就像将两个文件作为一个文件读取一样


对现有的解决办法有什么想法吗?是的,我知道我可以一起构建自己的小类或cat文件。只是想知道是否有我从未听说过的神奇的FileObject joiner。

如果您的库使用
.read()
读取文件,那么将多个文件对象合并为一个对象的抽象方法就没有多大意义了。读取所有内容并将其放入
StringIO

非常简单,如果您只想对文件调用readline(),请尝试以下操作:

def cat(*args):
    for arg in args:
        with open(arg,'r') as f:
            for line in f:
                yield line

for line in cat('/tmp/x1','/tmp/x2'):
    processLine(line)

您的文件对象已经可以通过生成器进行iterable,所以只需使用itertools将它们链接成一个大iterable即可

import itertools
all_the_things = itertools.chain(HeaderFile, BodyFile)
for line in all_the_things:
   # your code here

我想唯一的问题是如果你有一个头文件有3行,然后大量的行。我认为StringIO在这种情况下可能会占用大量内存。我想我想要的是一个文件对象,它与将文件放在一起,然后打开组合文件是无法区分的。使用tmp文件很好,但我想知道python中是否有一些神奇的joiner。这不起作用。所有的东西都不存在。是的,使用。阅读不是很好,但我不能改变我正在使用的库,这就是游戏。