【问题标题】:Google Cloud SDK Python Client: How to list files inside of a Cloud Storage bucket?Google Cloud SDK Python 客户端:如何列出 Cloud Storage 存储桶中的文件?
【发布时间】:2019-04-16 23:50:00
【问题描述】:

尝试使用 Python 获取并遍历我拥有的 Cloud Storage 存储桶内的所有文件。我正在使用官方图书馆,google-cloud-storage

使用gsutil,我可以运行gsutil ls gs://my-composer-bucket/dags/composer_utils/ 之类的命令。 google-cloud-storage 库是否提供与 gsutil ls 等效的方法?我想使用 Python 客户端而不是 shell 到 gsutil(不想在 Docker 映像中安装和验证 GCloud SDK)。

我尝试了一些不同的方法,但让我对 blob 的工作原理感到困惑:

>>> dag_folder_blob = cloud_composer_bucket.blob(bucket, 'dags/')
>>> dag_folder_blob.exists()
True
>>> util_folder_blob = cloud_composer_bucket.blob(bucket, 'dags/composer_utils/')  # directory exists
>>> util_folder_blob.exists()
False
>>> util_file_blob = cloud_composer-bucket.blob(bucket, 'dags/composer_utils/__init__.py')
>>> util_file_blob.exists()
True

【问题讨论】:

    标签: python google-cloud-platform google-cloud-storage


    【解决方案1】:

    您将需要使用 Bucket 对象的 list_blobs 方法。阅读有关listing objects in Cloud Storage 的更多信息。

    【讨论】:

    • 谢谢!没有考虑到它可能是与 Bucket 对象相关的操作,尽管我知道 Cloud Storage 在本地文件系统意义上没有“目录”。
    • 你是对的,没有目录。您使用列表 API 所做的是“搜索”存储桶中与您指定的模式匹配的所有 blob。
    【解决方案2】:
    # replicating command: gsutil ls gs://<bucketName>/<prefix>
    
    from google.cloud import storage
    bucket = storage.Client(<proj>).bucket(<bucketName>)
    for key in bucket.list_blobs(prefix=<prefix>):
        print key
    

    【讨论】:

      猜你喜欢
      • 2019-04-25
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      相关资源
      最近更新 更多