使用Python编辑含HTML的文本文件时输出为空的原因是什么?
问题原因及解决方法
核心错误点
- 打开文件时使用了
w写入模式,该模式会在打开文件的第一时间清空文件原有内容,且你全程没有向文件写入任何处理后的内容,最终文件自然为空。 bleach.clean的第一个参数传入的是字符串'f',既没有读取原文件的内容,也没有真正对HTML内容做处理,只是处理了字面量字符串"f",没有实际意义。- 处理后的结果没有保存也没有写回文件,处理逻辑完全没有落地。
修正后代码
import bleach # 第一步:读模式打开文件,读取原有HTML内容 with open('index1.txt', 'r', encoding='utf-8') as f: raw_content = f.read() # 第二步:用bleach处理读取到的内容 cleaned_content = bleach.clean( raw_content, tags=['p'], attributes=['style'], styles=['color'], ) # 第三步:写模式打开文件,把处理后的内容写入 with open('index1.txt', 'w', encoding='utf-8') as f: f.write(cleaned_content) # 第四步:读取验证结果 with open('index1.txt', 'r', encoding='utf-8') as f: content = f.read() print(content)
调整说明
- 拆分了读写流程,先读原文件内容再写回,避免
w模式直接清空原文件导致内容丢失 - 把读取到的原始文件内容传入
bleach.clean进行处理,拿到处理后的返回值 - 显式将处理后的内容写入文件,保证修改生效
- 统一用
with上下文管理器处理文件IO,不需要手动调用close(),更安全
内容的提问来源于stack exchange,提问作者Eva
相关产品推荐
相关产品推荐

