你总是得到的原因True
已经给出了,所以我只提供另一个建议:
如果您的文件不是太大,您可以将其读入字符串,然后使用它(比读取和检查每行更容易且通常更快):
with open('example.txt') as f:
if 'blabla' in f.read():
print("true")
另一个技巧:您可以通过使用来缓解可能的内存问题mmap.mmap()创建一个使用底层文件的“类似字符串”的对象(而不是读取内存中的整个文件):
import mmap
with open('example.txt') as f:
s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
if s.find('blabla') != -1:
print('true')
注意:在 python 3 中,mmap 的行为类似于bytearray
对象而不是字符串,因此您查找的子序列find()
必须是一个bytes
对象而不是字符串,例如。s.find(b'blabla')
:
#!/usr/bin/env python3
import mmap
with open('example.txt', 'rb', 0) as file, \
mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
if s.find(b'blabla') != -1:
print('true')
您还可以使用正则表达式mmap
例如,不区分大小写的搜索:if re.search(br'(?i)blabla', s):