Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python zuverlässig prüfen, ob eine Zeichenfolge in einer Textdatei vorhanden ist?
Suche nach Zeichenfolgen in Textdateien
Sie möchten das Vorhandensein einer bestimmten Zeichenfolge in einer Textdatei überprüfen und verschiedene Aktionen ausführen basierend auf dem Ergebnis. Trotz Ihrer Bemühungen gibt Ihr Code jedoch immer „True“ zurück, was Sie verwirrt. Dieser Leitfaden wird Ihnen helfen, das Problem zu lokalisieren und alternative Ansätze zur Erreichung Ihres Ziels bereitzustellen.
Der von Ihnen vorgestellte Originalcode hatte einen entscheidenden Fehler: Das Dateiobjekt konnte nicht geschlossen werden, was zu unerwartetem Verhalten führen konnte. Durch das Hinzufügen eines try/finally-Blocks mit ordnungsgemäßem Schließen der Datei wird der Code zuverlässig:
def check(): try: datafile = open('example.txt') found = False for line in datafile: if 'blabla' in line: found = True break finally: datafile.close() check() if found: print("true") else: print("false")
Erwägen Sie die Verwendung der with-Anweisung für eine präzise und sichere Möglichkeit zum Öffnen und Schließen von Dateien, da sie das Schließen von Dateien automatisch übernimmt:
with open('example.txt') as datafile: found = False for line in datafile: if 'blabla' in line: found = True break if found: print("true") else: print("false")
Wenn Ihre Textdatei mittelgroß ist, können Sie einen alternativen Ansatz verwenden, indem Sie die gesamte Datei in eine Zeichenfolge einlesen. Diese Methode ist oft schneller und einfacher als das Durchlaufen jeder Zeile:
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
Bei umfangreichen Textdateien können Sie mmap.mmap() verwenden, um eine dateigestützte Speicherzuordnung zu erstellen, sodass Sie diese nicht laden müssen gesamte Datei in den Speicher:
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')
Denken Sie daran, wenn Sie mmap mit Python 3 verwenden, die Teilsequenz für find() als Byte-Objekt behandeln (z. B. b'blabla'), um dem Verhalten von mmaps im Python-Interpreter zu entsprechen.
Das obige ist der detaillierte Inhalt vonWie kann ich in Python zuverlässig prüfen, ob eine Zeichenfolge in einer Textdatei vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!