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

Python a+模式读取文件报错io.UnsupportedOperation: not readable原因咨询

报错原因分析
  1. 核心触发原因:io.UnsupportedOperation: not readable 代表当前获取的文件对象不支持读操作,你虽然使用了理论上支持读写的a+模式,但如果运行Python进程的系统用户对data.txt文件本身没有读权限,就会触发该错误。你可以在Ubuntu终端执行ls -l data.txt查看文件权限,确认当前用户是否拥有读权限(权限位中是否有r标识)。
  2. 补充说明a+模式的特性:正常权限足够的前提下,a+模式打开文件后文件指针默认位于文件末尾,直接调用read()会读取到空字符串,不会触发你遇到的报错,所以权限问题是最高概率的诱因。
  3. 额外代码逻辑修正建议:你当前的代码逻辑即便解决了读报错,也会把清洗后的内容追加到原文件末尾,而非替换原内容,不符合你清洗文件的需求,建议调整为读写分离的逻辑:
import re

# 第一步读取原文件内容
with open('data.txt', 'r', encoding='utf-8') as f:
    data = f.read()
# 正则清洗内容
edited_data = re.sub(r'[^a-zA-Z.,!?-—() ]', '', data)
# 第二步覆盖写入清洗后的内容
with open('data.txt', 'w', encoding='utf-8') as f:
    f.write(edited_data)

另外注意你的正则表达式中-字符的位置,在字符集[]中如果放在两个字符中间会被识别为范围匹配符,你当前写的!?-—会被解析为匹配ASCII码从!到?的所有字符,加上长破折号—,如果你本意是要匹配短破折号-本身,建议将其移到字符集的开头或末尾,避免范围歧义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:06:03