Python在Windows系统运行脚本触发PermissionError权限错误如何解决
问题解决方案
错误根因
你遇到的权限报错绝大多数不是真的缺权限,而是Windows7对Unicode路径的兼容缺陷、以及手动拼接路径的写法问题导致的路径识别异常:
- 你的用户名包含非ASCII字符
ö,旧版本Python+Windows7组合处理这类路径时容易触发异常,误报权限不足 - 手动判断路径分隔符的写法容错率低,容易出现路径拼接错误
方案1:临时获取管理员权限(无需修改代码)
Windows7虽然没有sudo命令,但可以手动提权执行:
- 点击开始菜单,找到「命令提示符」或者「PowerShell」
- 右键点击对应选项,选择「以管理员身份运行」
- 在弹出的终端窗口中切换到脚本所在目录,执行
python install.py即可正常运行
方案2:优化代码,普通权限即可运行(更推荐)
只要修改路径处理逻辑,不需要管理员权限就能正常运行,修改后的代码如下:
import os from appdirs import AppDirs dirs = AppDirs("Startups", "Kerem Göksu", version="0.1.0-alpha") yml_file_dir = dirs.user_data_dir # 自动创建目录,已存在也不会报错 os.makedirs(yml_file_dir, exist_ok=True) # 用os.path.join自动适配不同系统的路径分隔符,比手动拼接更稳定 conf_path = os.path.join(yml_file_dir, 'conf.yml') with open(conf_path, 'w', encoding='utf-8') as f: f.write("""startup_prompt: 'What startup will you use today? ' startups: hello: - echo Hello, World!""")
修改点说明:
- 去掉手动判断路径分隔符的逻辑,改用原生
os.path.join适配跨系统路径规则,同时自动处理特殊字符转义 - 给
open方法加了encoding='utf-8'参数,避免Windows默认GBK编码写入配置文件出现乱码 - 用
os.makedirs的exist_ok参数代替手动捕获异常,兼容性更好
修改后直接用普通权限的终端执行即可,不需要管理员权限,本身%LOCALAPPDATA%目录就是当前用户的可读写目录,不需要额外权限。
内容的提问来源于stack exchange,提问作者kaiserthe13th
相关产品推荐
相关产品推荐

