Python读取Dictionary.txt文件无法识别新写入单词问题排查
问题根因
in操作符作用于文件对象时,会逐行迭代文件,匹配完整行内容(包含行尾的换行符\n)。你手动录入的单词如果是文件最后一行且未加换行,读取到的行内容和输入的word完全一致,所以可以匹配成功;但通过程序写入的单词后紧跟了换行符,该行读取结果为word + '\n',和无换行的输入值不相等,因此匹配失败。- 写入逻辑存在缺陷:追加新单词时没有提前补换行,如果原文件最后一行没有换行,新写入的单词会直接拼接在上一行内容的末尾,导致整行内容变为
原有内容+新单词,无法匹配到单独的单词。 - 存在资源泄漏问题:进入else分支时,直接将
dictionary变量重新赋值为追加模式的文件对象,原本只读模式打开的文件对象没有被正常关闭,会占用系统资源。
修复代码
word = input("Please enter a word: " ).lower() # 自动管理文件生命周期,读取时去除每行的换行符 with open("Dictionary.txt","r", encoding="utf-8") as f: word_list = [line.strip() for line in f] if word in word_list: print("word found") else: # 追加前先补换行,避免单词拼接在上一行末尾 with open("Dictionary.txt","a", encoding="utf-8") as f: f.write(f"\n{word}") f.write(f"\nThis sentence contains {word}")
优化说明
- 使用
with语法管理文件对象,自动完成文件关闭操作,无需手动调用close(),避免资源泄漏 - 读取文件时对每行执行
strip()操作,统一去除行尾换行符和多余空白字符,匹配时无需额外处理换行符问题 - 追加写入前先加换行符,避免新单词拼接在旧内容末尾导致匹配失败
内容的提问来源于stack exchange,提问作者lurve111
相关产品推荐
相关产品推荐

