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

如何使用Python将本地文件夹中的CSV文件上传至S3桶指定文件夹

使用Python将本地CSV文件上传至Amazon S3指定文件夹

前置准备

  • 安装AWS SDK for Python(boto3):
    pip install boto3
    
  • 配置AWS凭证:
    • 推荐方式:在本地创建~/.aws/credentials文件(Linux/macOS)或C:\Users\<你的用户名>\.aws\credentials(Windows),内容格式:
      [default]
      aws_access_key_id = 你的访问密钥ID
      aws_secret_access_key = 你的秘密访问密钥
      
    • 也可通过环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY配置,禁止在代码中硬编码凭证,存在泄露风险。

核心实现代码

以下代码会遍历本地指定文件夹下的所有CSV文件,将它们上传到S3存储桶的指定路径中:

import os
import boto3
from botocore.exceptions import ClientError

def upload_csvs_to_s3(local_folder, s3_bucket, s3_target_prefix):
    # 初始化S3客户端
    s3 = boto3.client('s3')
    
    # 遍历本地文件夹中的CSV文件
    for filename in os.listdir(local_folder):
        if filename.endswith('.csv'):
            local_file_path = os.path.join(local_folder, filename)
            # 构造S3对象键:目标前缀+文件名,S3的"文件夹"本质是键的前缀
            s3_object_key = os.path.join(s3_target_prefix, filename).replace('\\', '/')
            
            try:
                # 执行上传
                s3.upload_file(local_file_path, s3_bucket, s3_object_key)
                print(f"成功上传: {filename} -> s3://{s3_bucket}/{s3_object_key}")
            except ClientError as e:
                print(f"上传失败 {filename}: {e.response['Error']['Message']}")

# 替换为你的实际参数
LOCAL_CSV_FOLDER = "/path/to/your/local/csv/folder"
S3_BUCKET_NAME = "your-s3-bucket-name"
S3_TARGET_FOLDER = "target/folder/in/s3"  # 不需要开头的斜杠

# 启动上传
upload_csvs_to_s3(LOCAL_CSV_FOLDER, S3_BUCKET_NAME, S3_TARGET_FOLDER)

关键细节

  • S3没有真正的"文件夹",所谓文件夹是对象键的前缀。比如设置S3_TARGET_FOLDER = "data/2024/csv",上传后的文件键会是data/2024/csv/file.csv,控制台会显示为层级结构。
  • Windows系统下os.path.join会生成反斜杠\,需要替换为正斜杠/,符合S3对象键的格式要求。
  • 异常处理覆盖了权限不足、桶不存在、网络故障等常见问题,便于排查错误。

可选优化

  • 批量加速:使用boto3.s3.transfer.S3Transfer配置多线程,适合大量文件上传场景。
  • 避免重复上传:上传前调用s3.head_object()检查目标路径是否已有相同文件。
  • 指定存储类别:通过ExtraArgs={'StorageClass': 'STANDARD_IA'}设置低频访问存储,降低成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:22:42