gpt4 book ai didi

python - 如何使用 Google Cloud API 获取给定存储桶中的文件夹列表

转载 作者:太空狗 更新时间:2023-10-30 01:48:05 25 4
gpt4 key购买 nike

我想使用 Google Cloud Storage API 获取给定 Google Cloud 存储桶或文件夹中的所有文件夹。

例如,如果 gs://abc/xyz 包含三个文件夹 gs://abc/xyz/x1gs://abc/xyz/x2gs://abc/xyz/x3。 API 应返回 gs://abc/xyz 中的所有三个文件夹。

可以使用 gsutil 轻松完成

gsutil ls gs://abc/xyz

但我需要使用 python 和 Google Cloud Storage API 来完成。

最佳答案

这个问题是关于列出存储桶/文件夹中的文件夹。这些建议对我都没有用,在尝试了 google.cloud.storage SDK 之后,我怀疑不可能(截至 2019 年 11 月)列出存储桶中任何路径的子目录. REST API 是可能的,所以我写了这个小包装器...

from google.api_core import page_iterator
from google.cloud import storage

def _item_to_value(iterator, item):
return item

def list_directories(bucket_name, prefix):
if prefix and not prefix.endswith('/'):
prefix += '/'

extra_params = {
"projection": "noAcl",
"prefix": prefix,
"delimiter": '/'
}

gcs = storage.Client()

path = "/b/" + bucket_name + "/o"

iterator = page_iterator.HTTPIterator(
client=gcs,
api_request=gcs._connection.api_request,
path=path,
items_key='prefixes',
item_to_value=_item_to_value,
extra_params=extra_params,
)

return [x for x in iterator]

例如,如果您有 my-bucket 包含:

  • 狗吠
    • 数据集
      • v1
      • v2

然后调用 list_directories('my-bucket', 'dog-bark/datasets') 将返回:

['dog-bark/datasets/v1', 'dog-bark/datasets/v2']

关于python - 如何使用 Google Cloud API 获取给定存储桶中的文件夹列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com