Python写入CSV文件触发PermissionError [Errno 13]权限问题求助
解决Windows下Python写入CSV的PermissionError问题
代码里的明显错误
- 你使用了
with open(...) as tally_file:上下文管理器,它会自动处理文件的关闭操作,不需要手动调用tally_file.close();而且代码里的csv_file.close()完全多余,因为你根本没定义csv_file变量,这会触发额外的未定义错误。
权限错误的核心解决方向
1. 关闭占用文件的其他程序
Windows下如果game_tallies.csv正被Excel、记事本或其他程序打开,Python会无法写入该文件,直接触发权限拒绝。先关闭所有打开这个文件的程序,再重新运行脚本。
2. 更换写入路径到用户专属目录
C盘根目录下的文件夹(比如c:\smith\python)通常需要管理员权限才能写入,对新手来说最稳妥的方式是把文件放到用户自己的文档目录,示例:
file_name = r'C:\Users\你的用户名\Documents\game_tallies.csv'
替换成你自己的Windows用户名即可,这个路径默认拥有写入权限,无需额外设置。
3. 检查文件夹与文件的权限设置
右键点击目标文件夹(c:\smith\python)→ 属性 → 安全选项卡,确认当前登录用户拥有写入权限;如果是已存在的CSV文件,同样右键文件→属性→安全,检查写入权限是否开启。
4. 临时方案:以管理员身份运行脚本
右键点击你的Python脚本文件,选择“以管理员身份运行”,如果这能解决问题,说明确实是系统权限限制导致的,但优先推荐更换路径的方案,避免长期依赖管理员权限。
修正后的完整代码示例
import csv # 必须导入csv模块,否则csv.writer会报错 # 替换为你的用户目录路径 file_name = r'C:\Users\Peter\Documents\game_tallies.csv' with open(file_name, mode='w', newline="", encoding='utf-8') as tally_file: tally_writer = csv.writer(tally_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) tally_writer.writerow(['Banker Total','Player Total','Total Draws','Total Surrenders']) tally_writer.writerow([str(banker_total_score), str(player_total_score), str(draw_total), str(surrender_total)]) # 移除多余的close语句,with会自动处理
内容的提问来源于stack exchange,提问作者Peter Smith
相关产品推荐
相关产品推荐

