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

如何从GCS存储桶下载所有以Test开头的文件?

从GCS存储桶下载所有以'Test'开头的文件方法

glob.glob仅适用于本地文件系统的文件匹配,无法直接作用于Google Cloud Storage(GCS)的云端存储桶,你需要借助GCS客户端库的API来筛选并下载目标文件。

以下是实现批量下载的完整代码:

from google.cloud import storage
import os

def download_all_test_files(bucket_name, gcs_prefix, local_dir):
    # 初始化GCS客户端
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    
    # 确保本地目录存在
    os.makedirs(local_dir, exist_ok=True)
    
    # 列出所有以指定前缀开头的Blob(前缀包含路径和'Test'开头)
    blobs = bucket.list_blobs(prefix=gcs_prefix)
    
    for blob in blobs:
        # 跳过目录(GCS中文件夹是带后缀/的Blob)
        if blob.name.endswith('/'):
            continue
        # 构造本地文件路径,保留原文件名
        local_file_path = os.path.join(local_dir, os.path.basename(blob.name))
        # 下载文件
        blob.download_to_filename(local_file_path)
        print(f"已下载文件: {blob.name} -> {local_file_path}")

# 使用示例
if __name__ == "__main__":
    BUCKET_NAME = 'gcs-bucket'
    # 指定GCS中的路径前缀,对应目标路径+Test开头
    GCS_PREFIX = 'folder1/folder2/Test'
    # 本地保存目录
    LOCAL_DIR = r'C:\Users\path\path1\path2\path3\path4'
    
    download_all_test_files(BUCKET_NAME, GCS_PREFIX, LOCAL_DIR)

代码说明

  • bucket.list_blobs(prefix=gcs_prefix):通过指定folder1/folder2/Test作为前缀,精准筛选该路径下所有以'Test'开头的文件。
  • os.makedirs(local_dir, exist_ok=True):自动创建本地保存目录,避免因目录不存在报错。
  • 跳过目录条目:GCS中的文件夹本质是带/后缀的特殊Blob,遍历过程中需要跳过这些条目,只下载实际文件。
  • 保留原文件名:通过os.path.basename(blob.name)提取GCS文件的原始名称,确保本地文件命名与云端一致。

如果需要保留单个文件下载功能,建议将原代码中的硬编码参数改为外部传入,提升灵活性:

from google.cloud import storage

def download_blob(bucket_name, source_blob_name, destination_file_name):
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(source_blob_name)
    blob.download_to_filename(destination_file_name)
    print(f"已下载单个文件: {source_blob_name} -> {destination_file_name}")

# 使用示例
download_blob(
    bucket_name='gcs-bucket',
    source_blob_name='folder1/folder2/Test_data_01052022104530.csv',
    destination_file_name=r'C:\Users\path\path1\path2\path3\path4\Test.csv'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:10:36