Home >Backend Development >Python Tutorial >How Can I Reliably Check for a String's Presence in a Text File in Python?
Searching for Strings in Text Files
You're looking to verify the presence of a specific string within a text file and execute different actions based on the outcome. However, despite your efforts, your code consistently returns True, leaving you puzzled. This guide will help you pinpoint the issue and provide alternative approaches to achieve your goal.
The original code you presented had a crucial flaw: it failed to close the file object, which could lead to unexpected behaviors. By adding a try/finally block with proper file closing, the code becomes reliable:
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")
Consider using the with statement for a concise and safe way to open and close files, as it automatically handles file closure:
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")
If your text file is moderately sized, you can employ an alternate approach by reading the entire file into a string. This method is often faster and simpler than iterating through each line:
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
For extensive text files, you can use mmap.mmap() to create a file-backed memory map, avoiding the need to load the entire file into memory:
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')
Remember, if using mmap with Python 3, treat the subsequence for find() as a bytes object (e.g., b'blabla') to match the behavior of mmaps in the Python interpreter.
The above is the detailed content of How Can I Reliably Check for a String's Presence in a Text File in Python?. For more information, please follow other related articles on the PHP Chinese website!