GCS (Google Cloud Storage) を pythond で操作
メモ。
参考
インストール
下記のライブラリをインストールする。
pip install --upgrade google-api-python-client
pip install --upgrade google-cloud-storage
基本のコード
バケット操作をするために client を取得して操作する。
サンプルコードは下記の通り。
from google.cloud import storage as gcs
from google.oauth2 import service_account
# GCP Infos
PROJECT_ID = "xxx"
KEY_PATH = "./xxx.json"
BUCKET_NAME = "xxx"
# Credentials
credentials = service_account.Credentials.from_service_account_file(KEY_PATH)
client = gcs.Client(PROJECT_ID, credentials=credentials)
なお GCP 上ならば別にクレデンシャル情報は不要。
client = gcs.Client(PROJECT_ID)
バケット名一覧取得
[print(bucket.name) for bucket in client.list_buckets()]
バケット内のファイル一覧取得
[print(file.name) for file in client.list_blobs(BUCKET_NAME)]
バケットにアップロード
input_path = "./hoge.txt"
output_path = "./hoge.txt"
bucket = client.get_bucket(BUCKET_NAME)
blob_gcs = bucket.blob(input_path)
blob_gcs.upload_from_filename(output_path)
バケットからダウンロード
input_path = "./hoge.txt"
output_path = "./fugafuga.txt"
bucket = client.get_bucket(BUCKET_NAME)
blob = bucket.blob(input_path)
blob.download_to_filename(output_path)
バケットからファイルを読み込んでヘッダがキーの辞書にする
import io
import pandas as pd
from google.cloud import storage as gcs
from google.oauth2 import service_account
PROJECT_ID = "xxx"
KEY_PATH = "./xxx.json"
BUCKET_NAME = "xxx"
credentials = service_account.Credentials.from_service_account_file(KEY_PATH)
client = gcs.Client(PROJECT_ID, credentials=credentials)
file_names = [file.name for file in client.list_blobs(BUCKET_NAME)]
target_file_name = "test.csv"
if target_file_name in file_names:
bucket = client.get_bucket(BUCKET_NAME)
blob = gcs.Blob(target_file_name, bucket)
content = blob.download_as_string()
datas = pd.read_csv(io.BytesIO(content)).to_dict(orient="records")
print(datas)
else:
print(f"{BUCKET_NAME} に {target_file_name} はありませんでした。")
ディスカッション
コメント一覧
まだ、コメントがありません