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
Libérer: 2024-12-10 07:38:12
original
342 Les gens l'ont consulté

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")
Copier après la connexion

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")
Copier après la connexion

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")
Copier après la connexion

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')
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal