#python #shutil
Вопрос:
В моем конвейере обработки данных python мне нужно подготовить файл, разделенный вкладками, передать его в другую программу и проанализировать выходные данные. Результирующий файл сшивается из нескольких других файлов, которые работают асинхронно. Чтобы ускорить это, я использую shutil.copyfileobj
(файлы также разделены вкладками и всегда имеют одинаковый порядок столбцов, поэтому нет необходимости анализировать их содержимое), поэтому без асинхронности эта часть кода выглядит так (порядок потоковой передачи также не имеет значения):
prepare_files(...)
with open(final_file, "wb") as fin:
with open(file1, "rb") as fout:
shutil.copyfileobj(fsrc=fout, fdst=fin)
with open(file2, "rb") as fout:
shutil.copyfileobj(fsrc=fout, fdst=fin)
...
with open(filen, "rb") as fout:
shutil.copyfileobj(fsrc=fout, fdst=fin)
run_program(final_file, ...)
Проблема в том, что в этих файлах есть несколько столбцов, которые всегда постоянны (разные для каждого файла, и я знаю их значения). Интересно, есть ли способ не хранить эти постоянные столбцы, а вместо этого изменять поток, чтобы добавлять их. Например file1
, это может выглядеть так
1t2t3
4t5t6
...
но после потоковой передачи в результирующий файл я хочу добавить два постоянных значения в каждую строку:
1t2t3t0t1
4t5t6t0t1
...
Основная причина в том, что file1, ..., filen
данные поступают с удаленных хостов, поэтому я также хочу избежать передачи ненужных данных.