如何向临时文件写入文本?读取临时文件仅返回空列表如何解决
问题根因
执行tmp.readlines()得到空列表的核心原因是文件指针位置错误:完成所有写入操作后,文件读写指针停在文件末尾,此时直接读取相当于从末尾向后读取,自然只能拿到空结果。
修复方法
写入完成后、读取前调用tmp.seek(0)将指针复位到文件开头即可。同时你代码中两次额外拼接\n会导致最终输出出现多余空行,可同步调整。
修复后代码如下:
import tempfile with open("sentences.txt") as file: with tempfile.NamedTemporaryFile(mode="w+") as tmp: for line in file: if line.rstrip() != "I like cars.": # 原行本身自带换行符,不需要额外拼接 tmp.write(line) # 指针复位到文件开头 tmp.seek(0) with open("sentences.txt", "a") as f: f.write(tmp.read())
补充注意事项
Windows环境下使用NamedTemporaryFile需要额外添加delete=False参数,避免系统自动锁定临时文件导致读写失败,使用完成后可手动删除临时文件。
内容的提问来源于stack exchange,提问作者user16185519
相关产品推荐
相关产品推荐

