объединить несколько файлов в одну папку - PullRequest
0 голосов
/ 14 марта 2019

У меня есть корпус с именем 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 Ответ

0 голосов
/ 14 марта 2019

Измените open('D:/1.txt', 'w', encoding="utf-8") на open('D:/1.txt', 'a', encoding="utf-8"). Флаг a используется для добавления новых данных в конец файла, а флаг w всегда перезаписывает файл. Смотрите этот учебник .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...