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

使用open()读取公有AWS S3桶txt文件报FileNotFoundError如何解决?

问题原因

Python内置的open()函数仅支持读取本地文件系统中的文件,无法直接解析HTTP/HTTPS协议的S3公网访问链接,因此会触发路径不存在的报错。

修复方案

方案1:使用requests库直接获取公开文件(最简便)

适合仅需要读取单个公开文件的场景,代码示例:

import requests

# 替换为你的S3文件公开访问链接
s3_file_url = "替换为实际的S3公网访问地址"
response = requests.get(s3_file_url)
# 校验请求是否成功
response.raise_for_status()
# 读取txt文本内容
txt_content = response.text

方案2:使用AWS官方SDK boto3读取

适合需要频繁操作S3资源的场景,公有桶可配置匿名访问无需传入AWS凭证,代码示例:

import boto3
from botocore import UNSIGNED
from botocore.config import Config

# 初始化匿名S3客户端
s3_client = boto3.client('s3', config=Config(signature_version=UNSIGNED))
# 替换为实际的桶名称、文件在桶内的路径
bucket_name = "你的S3桶名"
file_key = "txt文件在桶内的完整路径,例如doc/test.txt"

resp = s3_client.get_object(Bucket=bucket_name, Key=file_key)
txt_content = resp['Body'].read().decode('utf-8')
注意事项
  • 使用requests方案时,传入的链接必须是S3对象的完整公网HTTP/HTTPS链接,不能使用s3://开头的资源标识,这类标识需要用boto3解析
  • 如果后续需要读取私有桶文件,只需配置好本地AWS凭证,移除boto3客户端的UNSIGNED配置即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:45:07