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

IDLE中open打开文件报PermissionError[Errno 1]终端运行正常

问题成因

该问题几乎都出现在macOS环境下,核心触发原因有两类:

  • GUI程序与终端程序的权限隔离:macOS对图形界面应用和命令行终端的权限管控机制独立。通过安装包部署的IDLE属于GUI应用,默认未被授予用户目录的读写权限,访问用户路径下的文件时会直接被系统拦截抛出PermissionError;而终端程序默认继承当前登录用户的目录操作权限,在对应目录下执行代码时可以正常访问文件。
  • 相对路径匹配错误:IDLE启动时的默认工作目录通常是Python自身的安装路径(属于系统受保护路径),如果直接用相对路径"abc.txt"打开文件,实际访问的是受保护路径下的目标文件,自然会触发权限报错;而在终端运行代码时,你本身就处于abc.txt所在的工作目录,相对路径可以正确命中目标文件,不会触发权限拦截。
  • 小概率触发场景:IDLE被macOS标记为互联网下载的隔离应用,系统默认限制其所有本地文件读写行为。
解决方法

按优先级依次尝试即可:

  1. 先校验工作目录匹配性
    在IDLE中先执行以下代码,确认当前工作目录:
    import os
    print(os.getcwd())
    
    如果输出路径不是abc.txt的存放目录,两种修复方式:
    • 打开文件时传入文件的完整绝对路径,示例:f = open("/Users/你的用户名/项目目录/abc.txt")
    • 执行os.chdir("/Users/你的用户名/项目目录")切换到正确工作目录后,再用相对路径打开文件
  2. 为IDLE开放磁盘访问权限
    打开「系统设置→隐私与安全性→完全磁盘访问权限」,在应用列表中找到对应版本的IDLE,勾选权限开关;如果列表中找不到IDLE,直接把应用程序文件夹里的IDLE.app拖入权限列表即可。操作完成后完全退出IDLE重启,再执行代码即可正常读写文件。
  3. 清除应用隔离标记(前两种方法无效时使用)
    在终端执行以下命令,清除IDLE的互联网下载隔离属性,注意把路径中的3.x替换为你本地安装的实际Python版本号:
    xattr -d com.apple.quarantine /Applications/Python\ 3.x/IDLE.app
    
    执行完成后重启IDLE即可。

不要通过sudo启动IDLE的方式提权解决问题,该操作会破坏Python环境的文件权限归属,后续安装第三方库时会频繁出现权限报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:36:17