#python #file
#python #файл
Вопрос:
У меня есть корпус с именем ZebRa, состоящий из 7 папок, в каждой из которых по 10 файлов внутри. Я хочу объединить 10 файлов внутри каждой папки, чтобы в итоге осталось только 7 папок. Вот что я пробовал:
import os
def CombineFiles(file_path):
with open(file_path, 'r', encoding="utf-8") as f:
OutFile = open('D:/1.txt', 'w', encoding="utf-8")
lines = f.read().splitlines()
for i in range(len(lines)):
lines[i] = lines[i].replace('n', '')
lines.append('n')
for i in range(len(lines)):
OutFile.write(lines[i])
return OutFile
for root, dirs, files in os.walk("C:/ZebRa", topdown= False):
for filename in files:
file_path = os.path.join(root, filename)
CombineFiles(file_path)
Однако, кажется, что каждый раз, когда он очищает содержимое OutFile, а сохраненный вывод — это только содержимое последнего файла в последней папке
Я также пробовал следующее, однако на выходе будет пустой файл:
import os
for root, dirs, files in os.walk("C:/ZebRa", topdown= False):
print(files)
with open('D:/1.txt', 'w', encoding="utf-8") as OutFile:
for filename in files:
file_path = os.path.join(root, filename)
with open(file_path, 'r', encoding="utf-8") as f:
OutFile.write(f.read())
Комментарии:
1. Изменять
'D:/1.txt'
каждую итерацию2. Как мне это сделать?
Ответ №1:
Измените open('D:/1.txt', 'w', encoding="utf-8")
на open('D:/1.txt', 'a', encoding="utf-8")
. a
флаг используется для добавления новых данных в конец файла, в то время как w
флаг всегда перезаписывает файл. Смотрите это руководство.
Комментарии:
1. Ах, добавить, я подумал, что он захочет новый файл