BytesIO est une fonction de gestion des données binaires en mémoire et est incluse dans la bibliothèque standard de Python io. Les données binaires se réfèrent principalement à des données telles que des images et des sons. (C'est comme MemoryStream en C #)
Accédez à Google Cloud Platform et créez un compte de service (API). Cliquez sur Menu de navigation> API et services> Informations d'identification pour accéder à l'écran. Cliquez ensuite sur Gérer les comptes de service.
Sur l'écran suivant, cliquez sur Créer un compte de service. Entrez les détails du compte de service pour chaque article.
Éléments de réglage | Réglages |
---|---|
Nom du compte de service | (Définir sur n'importe quel nom) |
Description du compte de service | (Paramètres facultatifs pour chaque projet pour faciliter la compréhension) |
Cliquez sur Créer lorsque vous avez terminé.
L'élément suivant créera un rôle pour Cloud Storage. Puisqu'il s'agit d'un test, j'ai choisi Storage Administrator
(pleine autorité).
Changeons le rôle en fonction de l'application utilisée.
Vous pouvez omettre le dernier élément. Cliquez sur le compte de service que vous avez créé, cliquez sur Ajouter une clé dans le champ Clés et sélectionnez Créer une nouvelle clé.
Sélectionnez JSON comme type de clé et "créez-le". Étant donné que le fichier JSON est téléchargé dans le stockage local, utilisez le fichier JSON dans l'élément suivant et utilisez Cloud Storage à partir de Python.
Nous installerons les bibliothèques requises pour ce projet dans l'ordre. Tout d'abord, pour accéder à Cloud Storage, installez la bibliothèque Google Cloud Storage avec pip install.
pip install google-cloud-storage
Pillow sera également installé pour enregistrer dans un fichier localement à l'aide de Pillow via BytesIO.
pip install requests pillow
Pour ceux qui veulent essayer les fichiers Excel, etc., installez openpyxl
pip install openpyxl
Accédez à Google Cloud Storage à partir de l'interface graphique, créez un bucket et préparez un fichier image approprié. Depuis l'écran de la console, accédez au menu de navigation> Stockage cloud. Cette fois, j'ai téléchargé le fichier du logo Python et l'ai enregistré sous le nom image.png. Fichier logo Python
Nous accéderons à Cloud Storage en utilisant la clé d'utilisateur d'accès créée au début. Tout d'abord, vous devez charger la clé de l'utilisateur d'accès. Je décrirai comment faire référence aux deux types d'accès.
#Lors de l'accès à l'aide de variables d'environnement
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '{Entrez le chemin où se trouve le fichier json}'
client= storage.Client()
#Lors de l'accès direct au fichier json.
client = storage.Client.from_service_account_json('{Entrez le chemin où se trouve le fichier json}')
Il s'agit du code Python qui récupère le fichier image enregistré dans Google Cloud Storage (GCS) et enregistre le fichier localement.
Comme l'explication du programme, obtenez le compartiment dans lequel vous souhaitez enregistrer le fichier et l'instance blob du nom du fichier de sauvegarde.
Puisque les données binaires de l'image sont incluses, elles seront lues par Pillow via BytesIO, et tout fichier image sera écrit.
Vous pouvez également télécharger le fichier directement depuis GCS en utilisant blob.download_to_filename
, mais cette fois GCS Les données sont transmises à la bibliothèque PIL, etc. en supposant que les fichiers supprimés de ce qui précède seront modifiés. </ font> </ strong>
from google.cloud import storage
from PIL import Image
import io
#Créer une instance client de Google Cloud Storage
#client = storage.Client()
client = storage.Client.from_service_account_json('●●●●●●●●●●.json')
#Obtenir une instance d'un bucket
bucket = client.bucket('{Nom du bucket créé avec n'importe quel nom}')
#Obtenir une instance blob d'un fichier
blob = bucket.blob('image.png')
img = Image.open(io.BytesIO(blob.download_as_string()))
img.save('sample.png')
Obtenez le fichier Excel sur GCS, lisez les données Blob avec openpyxl via BytesIO et enregistrez-le.
Vous pouvez également télécharger le fichier directement depuis GCS en utilisant blob.download_to_filename
, mais cette fois GCS Les données sont transmises à la bibliothèque PIL, etc. en supposant que les fichiers supprimés de ce qui précède seront modifiés. </ font> </ strong>
from google.cloud import storage
import openpyxl
import io
#Créer une instance client de Google Cloud Storage
client = storage.Client.from_service_account_json('●●●●●●●●●●.json')
#Obtenir une instance d'un bucket
bucket = client.bucket('{Nom du bucket créé avec n'importe quel nom}')
##Obtenir une instance blob d'un fichier
blob = bucket.blob('test.xlsx')
buffer = io.BytesIO()
blob.download_to_file(buffer)
wb = openpyxl.load_workbook(buffer)
wb.save('./retest.xlsx')
Recommended Posts