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

Python写入.py文件报io.UnsupportedOperation: not writable错误如何解决

问题原因

你调用open()函数时没有指定文件打开模式,Python默认使用只读模式(r)打开文件,该模式下禁止写入操作,因此触发io.UnsupportedOperation: not writable报错。

另外就算你修改了打开模式,直接在遍历文件句柄的过程中写入也会出现问题:文件指针会随着遍历逐行后移,写入位置不可控,且普通读写模式无法直接在文件中间插入内容,会覆盖原有数据。

正确实现方案

对于小体积的文件,推荐先把所有内容读取到内存修改,再整体写回文件,示例代码如下:

# 1. 以只读模式读取所有行到列表
with open("data.py", "r", encoding="utf-8") as f:
    lines = f.readlines()

# 2. 修改对应行内容,注意enumerate从0开始计数,i==7对应文件的第8行
if len(lines) >= 8:
    # 替换第8行内容,记得加换行符避免和下一行内容粘连
    lines[7] = "test\n"
    # 如果是要在第8行前插入新行,用 lines.insert(7, "test\n")
    # 如果是要在第8行后插入新行,用 lines.insert(8, "test\n")

# 3. 以写入模式打开文件,把修改后的内容写回
with open("data.py", "w", encoding="utf-8") as f:
    f.writelines(lines)
补充说明
  • open()常用模式说明:
    • r:只读模式(默认),文件不存在会抛出异常
    • w:只写模式,文件不存在会自动创建,文件已存在会先清空原有内容
    • r+:读写模式,文件不存在会抛出异常,写入默认从文件开头逐位覆盖原有内容
    • a:追加模式,写入的内容只会追加到文件末尾
  • 推荐使用with语法管理文件句柄,执行完代码块后会自动关闭文件,无需手动调用close()避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:27:00