Конкатенация файлов.txt. Записать содержимое в один файл.txt

У меня есть несколько TXT-файлов в папке. Мне нужно собрать их содержимое все в один файл.txt. Я работаю с Python и попробовал:

import os

rootdir = "\\path_to_folder\\"

for files in os.walk(rootdir):
    with open ("out.txt", 'w') as outfile:
         for fname in files:
             with open(fname) as infile:
                  for line in infile:
                      outfile.write(line)

но не сработало. Out.txt генерируется, но код никогда не заканчивается. Любой совет? Заранее спасибо.

2 ответа

os.walk возвращает кортежи, а не имена файлов:

with open ("out.txt", 'w') as outfile:
    for root, dirs, files in os.walk(rootdir):
        for fname in files:
             with open(os.path.join(root, fname)) as infile:
                  for line in infile:
                      outfile.write(line)

Также вы должны открывать outfile в начале, а не в каждом цикле.

Это решило мою проблему. Сгенерированный файл 'out.txt' составляет всего 151 КБ.

file_list = os.listdir("\\path_to_folder\\")

with open('out.txt', 'a+') as outfile:
for fname in file_list:
    with open(fname) as infile:
        outfile.write(infile.read())

Спасибо всем.

Другие вопросы по тегам