Проблема с конкатенацией файлов в Python? - PullRequest
0 голосов
/ 27 августа 2011

У меня есть 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)

Спасибо за помощь!

Ответы [ 2 ]

4 голосов
/ 27 августа 2011

вы постоянно перезаписываете один и тот же файл.

либо используйте:

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)
0 голосов
/ 27 августа 2011

Я считаю, что в вашем коде неправильно то, что на каждой итерации цикла вы по сути добавляете файлы сами к себе.

Если вы вручную развернете цикл, вы увидите, что я имею в виду:

# 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)
...