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.txtinside 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(shell 命令)

cat 1.txt>>2.txt

在 python 中,你可以使用 os.system() 来使用 shell 命令

于 2017-05-08T10:04:28.103 回答