0

このコードを使用してフォルダー内の複数の TXT ファイルをマージしようとしましたが、機能しません。

import os,shutil
path = "C:/Users/user/Documents/MergeFolder"
f=open(path + "/fileappend.txt","a")
for r,d,fi in os.walk(path):
     for files in fi:
         if files.endswith(".txt"):                         
              g=open(os.path.join(r,files))
              shutil.copyfileobj(g,f)
              g.close()
f.close()

誰にもアイデアがありますか?

4

2 に答える 2

1

編集:あなたはそれに書き込みながら、fileappend.txt内部を作成しています。path書き込みがディスクにフラッシュされるタイミングによっては、追加先のファイルを読み取ろうとしている可能性があります。これは、まあ、多くの奇妙さを引き起こすでしょう。fileappend.txt内部に配置しないことを検討してください。そうしないpathと、完了したらそこに移動するだけです。

次のように、コードをより適切に記述できます。

with open(os.path.join(path, "fileappend.tmp"), "a") as dest:
    for _, _, filenames in os.walk(path):
        for filename in fnmatch.filter(filenames, "*.txt"):
            with open(filename) as src:
                shutil.copyfileobj(src, dest)
os.rename(os.path.join(path, "fileappend.tmp"), "fileappend.txt")
于 2012-11-23T09:41:37.190 に答える
0

cat(シェルコマンド)を使用できます

cat 1.txt>>2.txt

Python では、os.system() を使用してシェル コマンドを使用できます。

于 2017-05-08T10:04:28.103 に答える