как передавать данные из исходного файла в конечный файл без записи на диск и использования минимального объема памяти - PullRequest
0 голосов
/ 26 сентября 2018

Использование Python 3.7 Я могу прочитать поток байтов из файла в объект io.BytesIO.

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

Машина, на которой размещен этот код, ограничена в ресурсах, и файловые объекты, которые будут перемещены, имеют различные (неизвестные) размеры.

Я пытался (и не смог) открыть поток байтов с точкиисточник данных и запись в место назначения данных без предварительного чтения всего файла в память

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

# Example 1
# Read from Origination into BytesIO 
buffer = io.BytesIO(origination.read())
buffer.seek(0)
# Write the stream out to the destination
destination("filenameAtDestination").upload(buffer)

Я хотел бы иметь возможность контролировать поток байтов и делать что-то вроде этого (псевдокод):

with io.BytesIO(origination.read(), <1MB chunk>) as data:
    destination("filenameAtDestination").upload(data)

Я надеюсь, что это передает мои намерения соответствующим образом.Мне пришлось абстрагировать точные механизмы происхождения и назначения по причинам соблюдения.

любые советы будут с благодарностью

...