You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何动态提取GCS存储桶中指定层级的子文件夹路径(非硬编码日期)

解决方案

核心思路

去掉硬编码的日期前缀,通过字符串操作动态处理每个对象的路径:针对桶内对象的路径(blob.name),定位最后一个斜杠的位置,截取从路径开头到该位置的子串,就能得到你需要的日期/abc/这类层级路径;如果是文件夹前缀(prefixes),本身已经是以斜杠结尾的层级路径,可直接使用。

修改后的代码

def my_list_bucket(self, bucketName, delimiter='/'):
    storage_client = self.storage_client.lookup_bucket(bucketName)
    # 移除硬编码前缀,遍历整个存储桶;若需限定起始路径,可将prefix设为函数参数传入
    blobs = storage_client.list_blobs(delimiter=delimiter)

    print("Blobs对应的目标路径:")
    for blob in blobs:
        blob_path = blob.name
        # 定位最后一个斜杠的索引
        last_slash_idx = blob_path.rfind(delimiter)
        if last_slash_idx != -1:
            # 截取开头到最后一个斜杠的部分(包含斜杠)
            target_path = blob_path[:last_slash_idx+1]
            print(target_path)
        else:
            # 处理根目录下无层级的文件
            print("该对象位于根目录,无层级路径")

    if delimiter:
        print("\nPrefixes(文件夹前缀):")
        for prefix in blobs.prefixes:
            # prefix本身就是带斜杠的层级路径,直接输出
            print(prefix)

代码说明

  • 移除硬编码的prefix='20230130',若需限定遍历范围,可新增prefix参数,调用时传入对应起始路径。
  • 用rfind(delimiter)精准定位最后一个斜杠,确保截取的是桶名到最后一个子目录的完整路径部分。
  • 增加无斜杠路径的处理逻辑,避免索引错误。

内容的提问来源于stack exchange,提问作者DarrenC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:27:13