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
Release: 2024-12-10 07:38:12
Original
360 people have browsed it

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")
Copy after login

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")
Copy after login

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")
Copy after login

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')
Copy after login

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 of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template