web-dev-qa-db-fra.com

Écrire Python DataFrame en CSV dans Azure Blob

J'ai eu deux questions sur la lecture et l'écriture d'objets Python de/vers Azure blob.

1) Quelqu'un peut-il me dire comment écrire Python dataframe en tant que fichier csv directement dans Azure Blob sans le stocker localement?

J'ai essayé d'utiliser les fonctions create_blob_from_text & create_blob_from_stream mais aucune d'entre elles ne fonctionne.

La conversion de la trame de données en chaîne et l'utilisation de la fonction create_blob_from_text écrit le fichier dans le blob mais en tant que chaîne ordinaire mais pas en tant que csv.

    df_b = df.to_string()
    block_blob_service.create_blob_from_text('test', 'OutFilePy.csv', df_b)  

2) Comment lire directement un fichier json dans le stockage d'objets blob Azure directement dans Python?

7
AngiSen

1) Quelqu'un peut-il me dire comment écrire Python dataframe en tant que fichier csv directement dans Azure Blob sans le stocker localement?

Vous pouvez utiliser la méthode pandas.DataFrame.to_csv .

Exemple de code:

from Azure.storage.blob import (
    BlockBlobService
)
import pandas as pd
import io

output = io.StringIO()
head = ["col1" , "col2" , "col3"]
l = [[1 , 2 , 3],[4,5,6] , [8 , 7 , 9]]
df = pd.DataFrame (l , columns = head)
print df
output = df.to_csv (index_label="idx", encoding = "utf-8")
print(output)

accountName = "***"
accountKey = "***"
containerName = "test1"
blobName = "test3.json"

blobService = BlockBlobService(account_name=accountName, account_key=accountKey)

blobService.create_blob_from_text('test1', 'OutFilePy.csv', output)

Résultat de sortie:

enter image description here

2.Comment lire directement un fichier json dans le stockage d'objets blob Azure directement dans Python?

Exemple de code:

from Azure.storage.blob import (
    BlockBlobService
)

accountName = "***"
accountKey = "***"
containerName = "test1"
blobName = "test3.json"

blobService = BlockBlobService(account_name=accountName, account_key=accountKey)

result = blobService.get_blob_to_text(containerName,blobName)

print(result.content)

Résultat de sortie:

enter image description here

J'espère que cela vous aide.

12
Jay Gong