Python查找文本文件指定字符串时返回结果异常如何解决
问题根源
代码的循环逻辑存在致命错误:for循环只会执行第一次迭代就触发return退出函数,完全不会遍历文件的后续行。
当前代码实际执行流程:
- 打开目标文本文件
- 仅读取第一行做匹配校验
- 第一行包含目标字符串:打印
OK返回1 - 第一行不包含目标字符串:直接打印
no返回0
- 第一行包含目标字符串:打印
只要目标字符串不在文件第一行,哪怕后续行存在完全匹配的内容,代码都会返回错误的未匹配结果。
修复方案
将未匹配时的返回逻辑移到整个for循环外部,等逐行遍历完文件所有内容、确认不存在匹配项后,再返回未找到的结果。
修复后的可运行代码:
def check_if_image_at_end_selected(): with open('Sanity_CS.txt', 'r') as checked_script: key = "MillSet_BBs.set_image_at_end('yes')" for num, line in enumerate(checked_script, 1): # 若需要忽略行首尾的空格、换行符、制表符,可将判断条件改为 if key in line.strip(): if key in line: print("OK") return 1 # 所有行遍历完成仍未匹配时才会走到此处 print("no") return 0
可选优化点
- 若匹配不需要区分大小写,可将行内容与key统一转为小写/大写后再做比对
- 若需要定位匹配位置,可在匹配成功时打印当前行号
num方便排查 - 若文件包含非UTF-8编码的特殊字符,打开文件时可指定对应编码参数,例如
open('Sanity_CS.txt', 'r', encoding='gbk')避免编码报错
内容的提问来源于stack exchange,提问作者I'm not a robot
相关产品推荐
相关产品推荐

