3
from itertools import chain


 infiles = [open('{}_example.txt'.format(i+1), 'r') for i in xrange(100)]
   with open('example.txt', 'w') as fout:
      for lines in chain(*infiles):
           fout.write(lines)

私はこれを使用しましたが、問題は前のファイルの最後に結合された次のファイルの最初の行です。

4

2 に答える 2

3

すべてのファイルを一度に開くのではなく、一度に 1 つずつ開きます。また、実際には行を反復処理する必要はありません (Python を正規化し、改行文字を削除します)。ファイル全体を読み取るだけです(バイナリとして読み書きして、Pythonがファイルを処理しないようにすることもできます)。

fileNames = ['{}_example.txt'.format(i+1) for i in xrange(100)]
with open('example.txt', 'w') as fout:
    for fileName in fileNames:
        with open(fileName, 'r') as fin:
            fout.write(fin.read())
            fout.write('\n') # if you want that
于 2013-02-23T23:28:09.103 に答える
0

改行文字を追加してみてください

  for lines in chain(*infiles):
       fout.write(lines)
       if not lines.endswith('\n'):
           fout.write('\n')

mtthで提案されているように、ファイルごとに実行できます。

from itertools import chain


infiles = [open('{}_example.txt'.format(i+1), 'r') for i in xrange(100)]
with open('example.txt', 'w') as fout:
    for infile in infiles:
        fout.write(infile.read())
        fout.write('\n')
于 2013-02-23T23:01:04.477 に答える