我有3个文件1.txt
,2.txt
和3.txt
,我试图将这些文件的内容连接到Python中的一个输出文件中。任何人都可以解释为什么下面的代码只写出1.txt
而不是2.txt
或3.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)
感谢您的帮助!
答案 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)