web-dev-qa-db-ja.com

フォルダー内のGoogle Cloud Storageからファイルをダウンロードする

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

これを止める方法はありますか/この方法でファイルをダウンロードしますか?乾杯。

12
pyy

はい-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インターフェイス上。

14
GregT