我想检查一个字符串是否在文本文件中。如果是,则执行 X。如果不是,则执行 Y。但是,出于某种原因,此代码始终返回 True
。谁能看出哪里出了问题?
def check():
datafile = file('example.txt')
found = False
for line in datafile:
if blabla in line:
found = True
break
check()
if True:
print "true"
else:
print "false"
原文由 HankSmackHood 发布,翻译遵循 CC BY-SA 4.0 许可协议
你总是得到
True
的原因已经给出了,所以我再提供一个建议:如果您的文件不是太大,您可以将其读入一个字符串,然后使用它(比逐行读取和检查行更容易且通常更快):
另一个技巧:您可以通过使用
mmap.mmap()
创建一个使用底层文件的“类字符串”对象(而不是读取内存中的整个文件)来缓解可能的内存问题:注意:在 python 3 中,mmap 的行为类似于
bytearray
对象而不是字符串,因此您使用find()
查找的子序列必须是bytes
对象而不是 a457-c2字符串,例如。s.find(b'blabla')
:您还可以在
mmap
例如,不区分大小写的搜索:if re.search(br'(?i)blabla', s):