使用boto3上传JSON文件至S3报错“No such file found in directory”求助
解决Boto3上传本地JSON文件到S3时的"No such file found"错误
我来帮你排查这个问题,你遇到的“No such file found”错误大概率是文件路径不正确导致的,下面是一步步的解决方案:
使用绝对路径替代相对路径
你代码里写的'myfile.json'是相对路径,Python会在脚本运行的当前工作目录里找这个文件,而不是你的桌面。要直接指向桌面的文件,必须用绝对路径:- Windows系统示例:
import os # 获取桌面绝对路径 desktop_path = os.path.join(os.environ['USERPROFILE'], 'Desktop') file_full_path = os.path.join(desktop_path, 'myfile.json') # 上传文件 s3.Bucket('myfirstbucket').upload_file(file_full_path, 'myfile.json') - macOS/Linux系统示例:
import os # 获取桌面绝对路径 desktop_path = os.path.expanduser('~/Desktop') file_full_path = os.path.join(desktop_path, 'myfile.json') # 上传文件 s3.Bucket('myfirstbucket').upload_file(file_full_path, 'myfile.json')
- Windows系统示例:
确认文件名完全匹配
检查文件名的大小写、后缀是否完全一致:- 比如
MyFile.json和myfile.json在区分大小写的系统(macOS/Linux)里是不同的文件 - Windows系统默认隐藏已知文件后缀,可能存在
myfile.json.txt这种被隐藏后缀的文件,需要在文件夹选项中开启“显示文件扩展名”来确认
- 比如
验证文件是否真的存在
可以先通过代码确认文件路径是否有效,避免手动输入错误:import os file_full_path = os.path.expanduser('~/Desktop/myfile.json') # 根据系统调整路径 if os.path.isfile(file_full_path): print("文件存在,可以正常上传") else: print(f"文件不存在:{file_full_path},请检查路径或文件位置")排查权限问题(可选)
如果以上都没问题,可能是文件权限限制:- macOS/Linux:运行
chmod +r ~/Desktop/myfile.json赋予读取权限 - Windows:确认当前用户有访问桌面文件的权限,没有被杀毒软件或系统安全策略拦截
- macOS/Linux:运行
内容的提问来源于stack exchange,提问作者A.Karan
相关产品推荐
相关产品推荐

