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

使用s3.glob读取文件时正确路径未显示引发文件找不到错误

解决S3文件夹CSV文件读取路径缺失前缀问题

s3fs的glob方法返回的是相对S3存储桶的文件路径,不带s3://前缀,直接传给pandas读取时会被识别为本地文件路径,因此触发FileNotFoundError。以下是两种可行的解决方法:

方法一:为路径添加s3://前缀

给每个返回的路径手动拼接s3://{bucket}/前缀,让pandas能识别这是S3路径:

import pandas as pd
import s3fs

s3 = s3fs.S3FileSystem(anon=False)
bucket='<my_s3_bucket_name>'
object_path = '<my-file-path>/*.csv'  # 避免使用内置关键字`object`作为变量名
file_paths = s3.glob(f's3://{bucket}/{object_path}')

# 拼接完整S3路径
full_s3_paths = [f's3://{bucket}/{path}' for path in file_paths]

# 批量读取并合并CSV文件
dfs = [pd.read_csv(path, storage_options={'anon': False}) for path in full_s3_paths]
combined_df = pd.concat(dfs, ignore_index=True)

方法二:使用s3fs直接打开文件对象

通过s3fs的open方法获取文件流,再传给pandas的read_csv:

import pandas as pd
import s3fs

s3 = s3fs.S3FileSystem(anon=False)
bucket='<my_s3_bucket_name>'
object_path = '<my-file-path>/*.csv'
file_paths = s3.glob(f's3://{bucket}/{object_path}')

dfs = []
for path in file_paths:
    # 打开S3文件对象
    with s3.open(f'{bucket}/{path}', 'r') as file:
        df = pd.read_csv(file)
        dfs.append(df)
combined_df = pd.concat(dfs, ignore_index=True)

注意:不要用object作为变量名,它是Python内置类型,可能引发未知问题。

内容的提问来源于stack exchange,提问作者Meenakshi Sumeet Arya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:27:22