Maison >développement back-end >Tutoriel Python >Comment puis-je vérifier de manière fiable la présence d'une chaîne dans un fichier texte en Python ?

Comment puis-je vérifier de manière fiable la présence d'une chaîne dans un fichier texte en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 07:38:12248parcourir

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

Recherche de chaînes dans des fichiers texte

Vous cherchez à vérifier la présence d'une chaîne spécifique dans un fichier texte et à exécuter différentes actions en fonction du résultat. Cependant, malgré vos efforts, votre code renvoie systématiquement True, vous laissant perplexe. Ce guide vous aidera à identifier le problème et à proposer des approches alternatives pour atteindre votre objectif.

Le code d'origine que vous avez présenté présentait un défaut crucial : il n'a pas réussi à fermer l'objet fichier, ce qui pourrait entraîner des comportements inattendus. En ajoutant un bloc try/finally avec une fermeture de fichier appropriée, le code devient fiable :

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")

Envisagez d'utiliser l'instruction with pour un moyen concis et sûr d'ouvrir et de fermer des fichiers, car elle gère automatiquement la fermeture des fichiers :

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")

Si votre fichier texte est de taille moyenne, vous pouvez utiliser une autre approche en lisant l'intégralité du fichier dans une chaîne. Cette méthode est souvent plus rapide et plus simple que de parcourir chaque ligne :

with open('example.txt') as f:
    if 'blabla' in f.read():
        print("true")

Pour les fichiers texte volumineux, vous pouvez utiliser mmap.mmap() pour créer une carte mémoire sauvegardée sur un fichier, évitant ainsi d'avoir à charger le fichier entier en mémoire :

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')

N'oubliez pas que si vous utilisez mmap avec Python 3, traitez la sous-séquence de find() comme un objet octets (par exemple, b'blabla') pour correspondre au comportement des mmaps dans l'interpréteur Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn