Python Azure Blob Direct Upload
Я пытаюсь прочитать csv из BLOB-объекта Azure в Python как поток и записать его обратно в BLOB-объект Azure напрямую. Операция чтения отлично работает, но запись потока вывода просто записывает пустой файл в BLOB-объект. Следующий код работает до печати (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)
1 ответ
Решение
Проблема в том, что после pd.read_csv
, курсор input_blob
в EOF. Так copyfileobj
просто ничего не копировать output_blob
,
Вы можете просто добавить input_blob.seek(0)
после read_csv
чтобы исправить эту проблему.