Пустой Azure BLOB-объектов с Python - PullRequest
0 голосов
/ 27 апреля 2020

Я просто хочу скачать блоб Excel из Azure Хранилища, внести некоторые изменения, а затем загрузить его с новым именем, используя Azure Python SDK v12. Я нашел несколько вопросов здесь, используя v2.x с модулем blockblobservice. Но это не доступно в v12. Дополнительным ограничением является то, что я не хочу ничего локально, так как это часть безсерверного приложения.

Вот мой код и обозначения:

from azure.storage.blob import BlobClient
import io
import pandas as pd

#Download Blob: works fine
download_client=BlobClient.from_connection_string(
        conn_str=az_str, 
        container_name=container_name, 
        blob_name=blob_name) 
read = io.BytesIO()
download_stream = download_client.download_blob()
df = pd.read_excel(download_stream.readall())

#Make arbitrary changes: works fine
df_new = df.append(df)
print(df_new)

#Upload Blob: blob is empty
new_blob_name=f'UploadTest.xlsx'
upload_client = BlobClient.from_connection_string(
        conn_str=az_str, 
        container_name=container_name, 
        blob_name=new_blob_name)

write = io.BytesIO()
df_new.to_excel(write, sheet_name='Test Sample') 
upload_client.upload_blob(write, blob_type="BlockBlob", overwrite=True)

1 Ответ

1 голос
/ 27 апреля 2020

Попробуйте, установив позицию потока на 0. Что-то вроде:

write = io.BytesIO()
df_new.to_excel(write, sheet_name='Test Sample')
write.seek(0)
upload_client.upload_blob(write, blob_type="BlockBlob", overwrite=True)
...