如何使用Boto3将S3文件下载到当前目录指定新建文件夹?
修改Boto3代码实现S3文件下载到指定文件夹
要把S3存储桶里的文件下载到当前目录下的指定文件夹,你需要对现有代码做以下调整:
- 导入
os模块处理路径和文件夹创建 - 定义目标文件夹并确保它存在
- 拼接文件保存路径,将文件写入目标文件夹
修改后的完整代码
import os import boto3 # 初始化S3客户端和桶对象 s3 = boto3.client('s3') bucket = boto3.resource('s3').Bucket('your-bucket-name') # 替换为你的实际桶名 # 指定要创建的目标文件夹名称 target_folder = 's3_downloads' # 创建目标文件夹,已存在则不报错 os.makedirs(target_folder, exist_ok=True) # 遍历桶内所有对象并下载 for obj in bucket.objects.all(): # 拼接本地保存路径:目标文件夹 + S3对象的键 save_path = os.path.join(target_folder, obj.key) # 如果S3对象键包含子目录结构,自动创建对应本地子目录 os.makedirs(os.path.dirname(save_path), exist_ok=True) # 执行下载 s3.download_file(bucket.name, obj.key, save_path)
关键修改说明
os.makedirs(target_folder, exist_ok=True):确保目标文件夹存在,避免重复创建时报错os.path.join(target_folder, obj.key):跨平台拼接路径,适配Windows和Linux的路径分隔符差异- 额外添加的
os.makedirs(os.path.dirname(save_path), exist_ok=True):如果S3对象的key包含层级结构(比如data/logs/2024.txt),会自动创建对应的本地子目录,防止因目录不存在导致下载失败
内容的提问来源于stack exchange,提问作者The Data Guy
相关产品推荐
相关产品推荐

