如何在GCS中创建以文件夹名为键、无后缀文件名列表为值的字典
生成GCS文件夹对应无后缀文件名的字典
前置依赖
先安装GCS Python开发工具包:
pip install google-cloud-storage
实现代码
import os from google.cloud import storage def build_gcs_folder_dict(bucket_name, folder_prefixes): folders_dict = {} client = storage.Client() bucket = client.get_bucket(bucket_name) for prefix in folder_prefixes: # 提取最后一级文件夹名作为字典的键 folder_key = prefix.split('/')[-2] file_names = [] # 遍历当前文件夹下的所有存储对象 for blob in bucket.list_blobs(prefix=prefix): # 跳过GCS中的虚拟文件夹标记(以/结尾的空对象) if blob.name.endswith('/'): continue # 提取文件名并去除.csv后缀 filename = os.path.basename(blob.name) if filename.endswith('.csv'): file_name_no_ext = os.path.splitext(filename)[0] file_names.append(file_name_no_ext) folders_dict[folder_key] = file_names return folders_dict # 示例调用 if __name__ == "__main__": # 替换为你的GCS桶名称 BUCKET_NAME = "your-bucket-name" # 替换为需要处理的GCS文件夹前缀列表(需以/结尾) FOLDER_PREFIXES = [ "temp_folder/stats/data_transfer/", "temp_folder/stats/appointments/", # 第三个文件夹前缀添加在此处 ] folders_dict = build_gcs_folder_dict(BUCKET_NAME, FOLDER_PREFIXES) print(folders_dict)
代码说明
- 客户端初始化:
storage.Client()会自动加载本地GCP认证凭据(GCP环境内无需额外配置)。 - 文件夹键提取:通过拆分文件夹前缀路径,取倒数第二部分作为字典的键,适配示例中
data_transfer、appointments的命名需求。 - 文件过滤与处理:遍历指定前缀下的所有存储对象,跳过虚拟文件夹,仅处理
.csv文件,通过os.path.splitext去除文件后缀。 - 字典构建:将每个文件夹对应的无后缀文件名列表与文件夹键绑定,最终返回符合需求的字典结构。
内容的提问来源于stack exchange,提问作者BloodKid01
相关产品推荐
相关产品推荐

