Pythonはテキストファイルを連結する

私は[‘file1.txt’、 ‘file2.txt’、…]のような20のファイル名のリストを持っています。これらのファイルを新しいファイルに連結するPythonスクリプトを作成したいと思います。私は各ファイルをf = open(…)で開き、f.readline()を呼び出して行ごとに読み込み、各行をその新しいファイルに書き込むことができました。それは私にとっては非常に “エレガント”ではないように思えます。特に、一行ずつ書く必要があります。

Pythonでこれを行うためのよりエレガントな方法はありますか?

ベストアンサー
これはそれを行う必要があります

大きなファイルの場合:

filenames = ['file1.txt', 'file2.txt', ...]
with open('path/to/output/file', 'w') as outfile:
    for fname in filenames:
        with open(fname) as infile:
            for line in infile:
                outfile.write(line)

小さなファイルの場合:

filenames = ['file1.txt', 'file2.txt', ...]
with open('path/to/output/file', 'w') as outfile:
    for fname in filenames:
        with open(fname) as infile:
            outfile.write(infile.read())

…そして私が思った別の興味深いもの:

filenames = ['file1.txt', 'file2.txt', ...]
with open('path/to/output/file', 'w') as outfile:
    for line in itertools.chain.from_iterable(itertools.imap(open, filnames)):
        outfile.write(line)

残念なことに、この最後のメソッドは、GCがとにかく面倒を見なければならないファイル記述子をいくつか残しています。私はそれが面白かったと思った

転載記事の出典を記入してください: Pythonはテキストファイルを連結する - コードログ