¿Alguien puede decirme si es posible leer un archivo csv directamente desde el almacenamiento de blobs de Azure como una secuencia y procesarlo con Python? Sé que se puede hacer usando C#.Net (que se muestra a continuación), pero quería saber cuál es la biblioteca equivalente en Python para hacerlo.
CloudBlobClient client = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = client.GetContainerReference("outfiles"); CloudBlob blob = container.GetBlobReference("Test.csv");*
Sí, ciertamente es posible hacerlo. Consulte el Azure Storage SDK for Python
from azure.storage.blob import BlockBlobService block_blob_service = BlockBlobService(account_name='myaccount', account_key='mykey') block_blob_service.get_blob_to_path('mycontainer', 'myblockblob', 'out-sunset.png')
Puede leer la documentación completa del SDK aquí: http://azure-storage.readthedocs.io .
Esta es una forma de hacerlo con la nueva versión del SDK (12.0.0):
from azure.storage.blob import BlobClient blob = BlobClient(account_url="https://<account_name>.blob.core.windows.net" container_name="<container_name>", blob_name="<blob_name>", credential="<account_key>") with open("example.csv", "wb") as f: data = blob.download_blob() data.readinto(f)
Ver aquí para más detalles.
Uno puede transmitir desde blob con python de esta manera:
from tempfile import NamedTemporaryFile from azure.storage.blob.blockblobservice import BlockBlobService entry_path = conf['entry_path'] container_name = conf['container_name'] blob_service = BlockBlobService( account_name=conf['account_name'], account_key=conf['account_key']) def get_file(filename): local_file = NamedTemporaryFile() blob_service.get_blob_to_stream(container_name, filename, stream=local_file, max_connections=2) local_file.seek(0) return local_file