Сообщить об ошибке.

Одновременное чтение из одного и запись в другой файл в Python

Работа с несколькими файлами в Python

Есть моменты, когда нужно читать файл, на лету обрабатывать строки и сразу писать в другой файл одновременно.

Это позволяет сделать оператор менеджера контекста with. Подготовим файл, который будем читать, изменять строки и сразу же писать новые данные в новый файл.

>>> text = 'Строка №1\nСтрока №2\nСтрока №3\n\
... Строка №4\nСтрока №5\nСтрока №6\nСтрока №7\n\
... Строка №8\nСтрока №9\nСтрока №10'
>>> with open('foo.txt', 'w') as fp:
...     fp.write(text)

Теперь будем читать построчно, менять слово "Строка" на слово "Линия -" и сразу же записывать изменения в файл new_foo.txt. Файл new_foo.txt нам создаст функции open() с символом 'w' для аргумента mode.

>>> read_file = 'foo.txt'
>>> write_file = 'new_foo.txt'
>>> with open(read_file, 'r') as fr, open(write_file, 'w') as fw:
...     for line in fr:
...         line = line.replace('Строка', 'Линия -')
...         fw.write(line)

Прочитаем созданный файл new_foo.txt:

>>> read_file = 'new_foo.txt'
>>> with open(read_file, 'r') as fr:
...     for line in fr:
...         print(line, end='')
... 
# Линия - №1
# Линия - №2
# Линия - №3
# Линия - №4
# Линия - №5
# Линия - №6
# Линия - №7
# Линия - №8
# Линия - №9
# Линия - №10

Для обработки файлов в несколько потоков смотрите модуль threading.

Объединение нескольких фалов в один.

Для решения данной задачи используем модуль стандартной библиотеки fileinput.

Для избежания рекурсивного чтения-записи, при отборе файлов из исходного каталога по маске '.txt', создаваемому общему файлу дано расширение .all, а не .txt.

import fileinput, pathlib

# каталог текстовых файлов
# измените на свой
pth = '/path/to/txt/files'
# маска поиска файлов по расширению
pattern = '*.txt'

files_path = pathlib.Path(pth)
list_files = files_path.glob(pattern)
# общий файл, создадим в текущем каталоге
new_file = 'new_file.all'

if list_files:
    with fileinput.FileInput(files=list_files) as fr, open(new_file, 'w') as fw:
        for line in fr:
            # определяем первую строку  
            # читаемого файла из каталога
            if fr.isfirstline():
                # название читаемого файла
                file_name = fr.filename()
                # дописываем строку с названием файла
                fw.write(f'\n\n------------ {file_name}\n\n')
            # пишем данные
            fw.write(line)

Конечно, можно решить эту задачу без использования модуля fileinput, но на обработку файлов будет затрачено больше времени.