Home >Backend Development >Python Tutorial >How Can I Reliably Check for a String's Presence in a Text File in Python?

How Can I Reliably Check for a String's Presence in a Text File in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 07:38:12258browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn