Google Cloud Storageバケットにアップロードされたファイルのリストを取得し、データを文字列として取得しようとするpythonスクリプトがあります。
コードは単純です:
file = open(base_dir + "/" + path, 'wb')
data = Blob(path, bucket).download_as_string()
file.write(data)
私の問題は、アップロードしたデータがバケット内のフォルダー内に保存されるため、パスは次のようになるということです。
folder/innerfolder/file.jpg
Googleライブラリがファイルをダウンロードしようとすると、GETリクエストの形式でファイルが取得され、上記のパスが次のようになります。
https://www.googleapis.com/storage/v1/b/bucket/o/folder%2Finnerfolder%2Ffile.jpg
これを止める方法はありますか/この方法でファイルをダウンロードしますか?乾杯。
はい-python ストレージクライアントライブラリ でこれを行うことができます。
_pip install --upgrade google-cloud-storage
_を使用してインストールし、次のコードを使用します。
_from google.cloud import storage
# Initialise a client
storage_client = storage.Client("[Your project name here]")
# Create a bucket object for our bucket
bucket = storage_client.get_bucket(bucket_name)
# Create a blob object from the filepath
blob = bucket.blob("folder_one/foldertwo/filename.extension")
# Download the file to a destination
blob.download_to_filename(destination_file_name)
_
.download_as_string()
を使用することもできますが、ファイルに書き込むため、とにかくファイルに直接ダウンロードする方が簡単な場合があります。
知っておくべき少し厄介なことは、ファイルパスがバケット名の後からのパスであるため、パスと正確に一致しないことですWebインターフェイス上。