2017-02-28 30 views
1

私はたくさんのtxtファイルを結合したいと思いますが、各ファイルの末尾に何かを追加して、1つのファイルがどこで終了し、どこが始まるかを知っています(この場合は "##### ######### ")glob.globを使ってtxtファイルを結合し、文字列を追加してtxtを分割する方法は?

個別のファイルを使用して読み込んだ場合、このコードは機能しますが、glob.globを使用してファイルのディレクトリを読み取ることができます。私がそうするとき、私は空白のoutfileを得ています。誰かがなぜこれが起こっているのか説明してもらえますか?

ありがとうございます!

import glob 
with open("concatenated.txt",'w') as outfile: 
    for files in glob.glob('\\home\\wra\\Desktop\\combine\\*.txt'): 
     for fname in files: 
      with open(fname) as infile: 
       outfile.write(infile.read() +"\n\n##################\n\n") 
+0

あなたのパスにバックスラッシュの代わりにスラッシュを試してみてください。 –

+0

@Rawingありがとう!これを初めて知り、まだ混乱する。 – wra

答えて

1

2の問題点(1つの警告):

  • UNIXパスセパレータとして'/'、ない\\有するべきです。 Unixのパス形式はWindows上では動作しますが、それ以外の方法では動作しません。
  • glob.globで直接反復処理を行うことができます。 filenames = glob.glob(...)またはfor filename in glob.glob(...)
  • infile.read()は、infileが大きい場合は危険です。ファイルを1行ずつ書き込むことができます。

import glob 
with open("concatenated.txt",'w') as outfile: 
    for filename in glob.glob('/home/wra/Desktop/combine/*.txt'): 
     with open(filename) as infile: 
      for line in infile: 
       outfile.write(line) 
     outfile.write("\n\n##################\n\n") 
+1

これは完璧に機能しました! (まだ2ヶ月間Pythonを使用していますので、まだ初心者です)。助けてくれてありがとう! – wra

関連する問題