Der Grund, warum Sie immer bekommen haben, Truewurde bereits angegeben, daher werde ich nur einen weiteren Vorschlag machen:
Wenn Ihre Datei nicht zu groß ist, können Sie sie in eine Zeichenfolge einlesen und diese einfach verwenden (einfacher und oft schneller als das Lesen und Überprüfen von Zeile für Zeile):
with open('example.txt') as f:
if 'blabla' in f.read():
print("true")
Ein weiterer Trick: Sie können die möglichen Speicherprobleme verringern, indem Sie mmap.mmap()ein "stringartiges" Objekt erstellen, das die zugrunde liegende Datei verwendet (anstatt die gesamte Datei im Speicher zu lesen):
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')
HINWEIS: In Python 3 verhalten sich mmaps bytearrayeher wie Objekte als wie Zeichenfolgen. Daher muss die Teilsequenz , nach der Sie suchen find(), auch ein bytesObjekt und keine Zeichenfolge sein, z. 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')
Sie können auch reguläre Ausdrücke für die mmapSuche verwenden, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird:if re.search(br'(?i)blabla', s):