3

ヘッダーと本文の2つのファイルがあります。私は図書館を使って全部を読んでいます。「fileinput.input」を使用して1つのFileInputオブジェクトを作成し、これをデータを読み取るライブラリに渡すことができます。問題は、FileInputオブジェクトに、ライブラリが期待していると思われる「.read」属性がないことです。

両方のファイルを1つとして読み取るような.readを持つFileObjectが必要です。

既存の回避策について何かアイデアはありますか?はい、私は自分の小さなクラスや猫のファイルを一緒に作成できることを知っています。私が聞いたことがない魔法のFileObjectジョイナーがあるかどうか疑問に思っています。

4

3 に答える 3

2

ライブラリが。を使用してファイルから読み取る場合、.read()複数のファイルオブジェクトを1つにマージするという抽象化にはあまり意味がありません。すべてを読んでそれをに投げ込むのは非常に簡単StringIOです。

于 2013-03-27T14:08:08.227 に答える
1

ファイルに対して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)
于 2013-03-27T14:46:35.980 に答える
1

ファイルオブジェクトは既にジェネレーターを介して反復可能であるため、itertoolsを使用してそれらを1つの大きな反復可能ファイルにチェーンします。

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