Python PermissionError[Errno13]求助:无法创建新文件权限被拒
PermissionError: [Errno 13] 无法创建新文件的原因与解决方法
这个错误的核心原因是Python进程没有当前工作目录的写入权限。当你用相对路径(比如直接写bacon.txt)创建新文件时,Python需要在当前运行目录下生成新文件,如果该目录禁止普通用户写入(比如系统根目录、Windows的C:\Windows、Linux的/root),就会触发权限拒绝。而已存在的文件能正常打开写入,是因为文件本身的权限允许你修改,但创建新文件需要的是目录层面的写入权限。
解决方案
切换到有权限的目录运行代码
- 先在Python交互环境执行以下命令查看当前工作目录:
import os print(os.getcwd()) - 如果输出是系统保护目录,切换到用户个人目录(比如Windows的
C:\Users\你的用户名、Linux/macOS的~/Documents),再重新运行代码。
- 先在Python交互环境执行以下命令查看当前工作目录:
使用绝对路径指定文件位置
- 直接指定有写入权限的文件夹路径,比如:
Windows系统(注意转义反斜杠或用原始字符串):
Linux/macOS系统:# 转义写法 baconFile = open('C:\\Users\\你的用户名\\Desktop\\bacon.txt', 'w') # 原始字符串写法 baconFile = open(r'C:\Users\你的用户名\Desktop\bacon.txt', 'w')baconFile = open('/home/你的用户名/Documents/bacon.txt', 'w')
- 直接指定有写入权限的文件夹路径,比如:
检查Python的运行权限
- 避免用管理员/root权限运行Python或IDE,这类高权限进程可能会限制文件创建的目录范围。比如Windows不要勾选"以管理员身份运行"打开IDLE或命令提示符;Linux/macOS不要用
sudo python执行脚本。
- 避免用管理员/root权限运行Python或IDE,这类高权限进程可能会限制文件创建的目录范围。比如Windows不要勾选"以管理员身份运行"打开IDLE或命令提示符;Linux/macOS不要用
shelve模块的处理
- shelve创建数据文件时会生成多个关联文件(如
.dat、.bak、.dir),同样需要目录的写入权限,解决方式和上面一致,指定有权限的绝对路径即可:import shelve shelf_file = shelve.open(r'C:\Users\你的用户名\Desktop\my_data')
- shelve创建数据文件时会生成多个关联文件(如
内容的提问来源于stack exchange,提问作者RedK121
相关产品推荐
相关产品推荐

