Python中的文件串联问题?

时间:2011-08-27 19:51:42

标签: python file-io concatenation shutil

我有3个文件1.txt2.txt3.txt,我试图将这些文件的内容连接到Python中的一个输出文件中。任何人都可以解释为什么下面的代码只写出1.txt而不是2.txt3.txt的内容?我确信这很简单,但我似乎无法弄清楚问题。

import glob
import shutil

for my_file in glob.iglob('/Users/me/Desktop/*.txt'):
    with open('concat_file.txt', "w") as concat_file:
        shutil.copyfileobj(open(my_file, "r"), concat_file)

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

你不断覆盖同一个文件。

使用:

with open('concat_file.txt', "a")

with open('concat_file.txt', "w") as concat_file:
    for my_file in glob.iglob('/Users/me/Desktop/*.txt'):
        shutil.copyfileobj(open(my_file, "r"), concat_file)

答案 1 :(得分:0)

我相信你的代码出了什么问题,在每次循环迭代中,你实际上是在向自己添加文件。

如果您手动展开循环,您将看到我的意思:

# my_file = '1.txt'
concat_file = open(my_file)
shutil.copyfileobj(open(my_file, 'r'), concat_file)
# ...

我建议事先决定要将所有文件复制到哪个文件,可能是这样的:

import glob
import shutil

output_file = open('output.txt', 'w')

for my_file in glob.iglob('/Users/me/Desktop/*.txt'):
    with open('concat_file.txt', "w") as concat_file:
        shutil.copyfileobj(open(my_file, "r"), output_file)