25

ファイルが Google Cloud Storage の特定のフォルダにあるかどうかを確認する Python プログラムを作成します。基本的な考え方はlist、フォルダ内のすべてのオブジェクトのファイル名を取得しlist、ファイルabc.txtがファイル名list.

問題は、Google が を取得する 1 つの方法しか提供していないように見えることですobj list。これはuri.get_bucket()、以下のコードを参照してください。

uri = boto.storage_uri(DOGS_BUCKET, GOOGLE_STORAGE)
for obj in uri.get_bucket():
    print '%s://%s/%s' % (uri.scheme, uri.bucket_name, obj.name)
    print '  "%s"' % obj.get_contents_as_string()

の欠点uri.get_bucket()は、最初にすべてのオブジェクトを取得しているように見えることです。これは私が望んでいないことです。特定のフォルダーのobj名前listを取得する必要があります(例gs//mybucket/abc/myfolder) 。

誰かが答えを助けることができますか?すべての答えに感謝します!

4

5 に答える 5

33

更新: 以下は、Python 用の古い「Google API クライアント ライブラリ」に当てはまりますが、そのクライアントを使用していない場合は、Python 用の新しい「Google Cloud クライアント ライブラリ」( https://googleapis.dev/python/ storage/latest/index.html )。新しいライブラリの場合、以下のコードに相当するものは次のとおりです。

from google.cloud import storage

client = storage.Client()
for blob in client.list_blobs('bucketname', prefix='abc/myfolder'):
  print(str(blob))

古いクライアントへの回答は次のとおりです。

フル機能の Python クライアントを備えた JSON API を使用する方が簡単な場合があります。これには、次の方法で特定のディレクトリとその子をチェックするために使用できる、プレフィックス パラメーターを取るオブジェクトを一覧表示する関数があります。

from apiclient import discovery

# Auth goes here if necessary. Create authorized http object...
client = discovery.build('storage', 'v1') # add http=whatever param if auth
request = client.objects().list(
    bucket="mybucket",
    prefix="abc/myfolder")
while request is not None:
  response = request.execute()
  print json.dumps(response, indent=2)
  request = request.list_next(request, response)

list 呼び出しの完全なドキュメントはこちら: https://developers.google.com/storage/docs/json_api/v1/objects/list

また、Google Python API クライアントは、 https ://code.google.com/p/google-api-python-client/ に記載されています。

于 2014-03-14T08:22:59.330 に答える