Соединение txt файлов

orlov1

Новичок
Пользователь
Июн 23, 2021
54
2
8
Всем привет !

В одном каталоге расположены 3 txt файла: input1.txt, input2.txt, input3.txt, нужно проверить наличие каждого из них и если существует, записать содержимое этих файлов в один файл results.txt, поочередно, в том же каталоге. Подскажите как записать код ?
 

PYDEV

Модератор
Команда форума
Модератор
Авг 31, 2023
84
22
8
Python:
import os

input_files = ["input1.txt", "input2.txt"]
result_file = "result.txt"

def process_file(file: str, out_f) -> None:
    with open(file, "r", encoding="UTF-8") as f:
        out_f.writelines(f.readlines())
        out_f.write("\n")

def main() -> None:
    exists_files = [file for file in input_files if os.path.exists(file)]

    with open(result_file, "w", encoding="UTF-8") as out_f:
        for file in exists_files:
            process_file(file, out_f)

if __name__ == "__main__":
    main()
я бы сделал что-то такое, решение, которое сразу пришло в бошку. Наверное можно это дело улучшить
 

orlov1

Новичок
Пользователь
Июн 23, 2021
54
2
8
Python:
import os

input_files = ["input1.txt", "input2.txt"]
result_file = "result.txt"

def process_file(file: str, out_f) -> None:
    with open(file, "r", encoding="UTF-8") as f:
        out_f.writelines(f.readlines())
        out_f.write("\n")

def main() -> None:
    exists_files = [file for file in input_files if os.path.exists(file)]

    with open(result_file, "w", encoding="UTF-8") as out_f:
        for file in exists_files:
            process_file(file, out_f)

if __name__ == "__main__":
    main()
я бы сделал что-то такое, решение, которое сразу пришло в бошку. Наверное можно это дело улучшить
Благодарю, только видимо эта строка

Python:
out_f.write("\n")

лишняя, т.к в результирующем файле лишние пустые строки.
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
453
126
43
Ещё 1 вариант
Python:
import os, fileinput

input_files = ["input1.txt", "input2.txt", "input3.txt"]
result_file = "result.txt"

with open(result_file, "w", encoding="utf-8") as out_file:
    for line in fileinput.input(files=filter(os.path.isfile, input_files)):
        out_file.write(line)
 

Форум IT Специалистов