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

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),再重新运行代码。
  • 使用绝对路径指定文件位置

    • 直接指定有写入权限的文件夹路径,比如:
      Windows系统(注意转义反斜杠或用原始字符串):
      # 转义写法
      baconFile = open('C:\\Users\\你的用户名\\Desktop\\bacon.txt', 'w')
      # 原始字符串写法
      baconFile = open(r'C:\Users\你的用户名\Desktop\bacon.txt', 'w')
      
      Linux/macOS系统:
      baconFile = open('/home/你的用户名/Documents/bacon.txt', 'w')
      
  • 检查Python的运行权限

    • 避免用管理员/root权限运行Python或IDE,这类高权限进程可能会限制文件创建的目录范围。比如Windows不要勾选"以管理员身份运行"打开IDLE或命令提示符;Linux/macOS不要用sudo python执行脚本。
  • shelve模块的处理

    • shelve创建数据文件时会生成多个关联文件(如.dat、.bak、.dir),同样需要目录的写入权限,解决方式和上面一致,指定有权限的绝对路径即可:
      import shelve
      shelf_file = shelve.open(r'C:\Users\你的用户名\Desktop\my_data')
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 23:42:03