1. ホーム
  2. python

[解決済み] Pythonでテキストファイルを連結する方法は?

2022-02-03 08:10:50

質問

次のような20個のファイル名のリストがあります。 ['file1.txt', 'file2.txt', ...] . これらのファイルを連結して新しいファイルにするPythonスクリプトを書きたい。各ファイルを開くには f = open(...) を呼び出すことで、一行ずつ読み込むことができます。 f.readline() そして、その新しいファイルに各行を書き込む。特に一行ずつ読み書きをしなければならない部分は、私にはあまりエレガントとは思えません。

Python でこれを行うには、もっと "elegant" な方法があるのでしょうか?

どのように解決するのですか?

これは、それを行う必要があります

大きなファイルの場合

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が面倒を見るべきものです。私はただ、面白いと思っただけです。