Прямая загрузка больших двоичных объектов Python Azure

Я пытаюсь прочитать csv из большого двоичного объекта Azure в Python в виде потока и напрямую записать его обратно в большой двоичный объект Azure. Операция чтения работает отлично, но запись выходного потока просто записывает пустой файл в большой двоичный объект. Следующий код работает до печати (df), но не после этого.

Ниже приведен код:

Код:

from io import BytesIO, StringIO

with BytesIO() as input_blob:   

  with BytesIO() as output_blob:

    block_blob_service = BlockBlobService(account_name='aaaccc', account_key='*/*/*--')

    block_blob_service.get_blob_to_stream('test', 'Source.csv', input_blob)

    input_blob.seek(0)

    df=pd.read_csv(input_blob)

    print(df)

    copyfileobj(input_blob, output_blob)

    block_blob_service.create_blob_from_stream('test', 'OutFilePy.csv', output_blob)

person AngiSen    schedule 24.04.2018    source источник
comment
что делает функция copyfileobj? Вы можете отредактировать свой вопрос и вставить определение этого?   -  person Saher Ahwal    schedule 24.04.2018
comment
@Saher, copyfileobj копирует входной поток в выходной поток. Я пытаюсь записать скопированный output_blob в хранилище больших двоичных объектов, но он просто записывает пустой файл   -  person AngiSen    schedule 25.04.2018
comment
Я думаю, что проблема может быть в том, что курсор input_blob находится в EOF после pd.read_csv. input_blob.seek(0) после read_csv может быть полезно.   -  person Sraw    schedule 25.04.2018
comment
Фантастический Sraw, это работает! последний вопрос ... что, если мне нужно выполнить некоторые операции с фреймворком данных и записать измененный фреймворк данных в виде потока в большой двоичный объект?   -  person AngiSen    schedule 25.04.2018
comment
@Sraw Вы можете переместить свой комментарий в ответ, чтобы помочь большему количеству членов сообщества найти, спасибо.   -  person Joy Wang    schedule 25.04.2018
comment
@Sraw Не могли бы вы переместить ответ из комментария в ответ, чтобы помочь лазурному сообществу?   -  person Adam Smith - Microsoft Azure    schedule 01.05.2018
comment
@AdamSmith-MSFT Готово :)   -  person Sraw    schedule 02.05.2018


Ответы (1)


Проблема в том, что после pd.read_csv курсор input_blob находится в EOF. Так что copyfileobj просто ничего не копируйте в output_blob.

Вы можете просто добавить input_blob.seek(0) после read_csv, чтобы решить эту проблему.

person Sraw    schedule 02.05.2018