3

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

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

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

4

3 回答 3

2

如果您的库从带有 的文件中读取.read(),那么将多个文件对象合并为一个的抽象意义不大。阅读所有内容并将其放入StringIO.

于 2013-03-27T14:08:08.227 回答
1

if you just want to call readline() on the files, try this:

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)
于 2013-03-27T14:46:35.980 回答
1

您的文件对象已经可以通过生成器进行迭代,因此只需使用 itertools 将它们链接成一个大的可迭代对象。

import itertools
all_the_things = itertools.chain(HeaderFile, BodyFile)
for line in all_the_things:
   # your code here
于 2013-03-27T15:16:15.630 回答