Maison >développement back-end >Tutoriel Python >Pourquoi ma fonction de recherche de chaîne renvoie-t-elle toujours True ?
Recherche de chaînes dans des fichiers texte
En cherchant à détecter la présence d'une chaîne particulière dans un fichier texte, vous êtes tombé sur un problème où le code renvoie True de manière inattendue quelle que soit l’existence de la chaîne. Examinons le code et corrigeons le problème :
def check(): datafile = file('example.txt') found = False for line in datafile: if blabla in line: found = True break check() if True: print "true" else: print "false"
Le nom de la variable blabla suggère qu'il y a une chaîne que vous essayez de trouver, mais elle n'est pas définie dans le code. C'est probablement la source du problème où le code renvoie toujours True. Assurez-vous de définir blabla avec la chaîne appropriée que vous recherchez avant d'exécuter la fonction check().
Approche alternative utilisant la lecture de fichier :
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
Ceci La méthode lit l’intégralité du fichier en mémoire, permettant ainsi la recherche directe de la chaîne. Cependant, gardez à l'esprit que cette approche peut ne pas convenir aux fichiers volumineux en raison de limitations de mémoire.
Approche mmap :
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')
mmap permet de créer une mémoire- représentation mappée du fichier, créant efficacement un objet « de type chaîne » qui utilise le fichier sous-jacent sans lire l'intégralité du fichier en mémoire, réduisant ainsi l'utilisation de la mémoire.
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!