True
Ya se ha dado la razón por la que siempre recibiste , así que solo ofreceré otra sugerencia:
Si su archivo no es demasiado grande, puede leerlo en una cadena y simplemente usarlo (más fácil y a menudo más rápido que leer y verificar línea por línea):
with open('example.txt') as f:
if 'blabla' in f.read():
print("true")
Otro truco: puede aliviar los posibles problemas de memoria mediante la mmap.mmap()
creación de un objeto "similar a una cadena" que utiliza el archivo subyacente (en lugar de leer todo el archivo en la memoria):
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')
NOTA: en python 3, los mmaps se comportan como bytearray
objetos en lugar de cadenas, por lo que la subsecuencia que busca find()
debe ser un bytes
objeto en lugar de una cadena, por ejemplo. s.find(b'blabla')
:
#!/usr/bin/env python3
import mmap
with open('example.txt', 'rb', 0) as file, \
mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
if s.find(b'blabla') != -1:
print('true')
También puede usar expresiones regulares en mmap
, por ejemplo, búsqueda sin distinción entre mayúsculas y minúsculas:if re.search(br'(?i)blabla', s):
'blabla' in open('example.txt').read()
en mi python 2.7s.find('blabla')
(verifique -1). Podría jurar que solía funcionarin
también ... Pero parece que ahorain
solo funciona para personajes individuales ...if 'blabla' in open('example.txt').read(): print "true"
==> ¿Cómo podemos cerrar elexample.txt
archivo en este caso?open
En general, debe encapsularse en unawith
declaración:with open(file_name) as fl: return text in fl.read()
Como dijo Jeffrey, no estás comprobando el valor de
check()
. Además, sucheck()
función no devuelve nada. Tenga en cuenta la diferencia:Luego puede probar la salida de
check()
:fuente
Aquí hay otra forma de responder su pregunta usando la función de búsqueda que le da un valor numérico literal de dónde está realmente algo
en find escribe la palabra que deseas encontrar y
'file'
representa tu nombre de archivofuente
Esto siempre sucede porque Verdadero siempre es Verdadero.
Quieres algo como esto:
¡Buena suerte!
fuente
Hice una pequeña función para este propósito. Busca una palabra en el archivo de entrada y luego la agrega al archivo de salida.
fuente
Su
check
función debe devolver elfound
booleano y usarlo para determinar qué imprimir.el segundo bloque también podría condensarse en:
fuente
Dos problemas:
Su función no devuelve nada; una función que no devuelve nada explícitamente devuelve None (que es falso)
Verdadero siempre es verdadero: no está comprobando el resultado de su función
.
fuente
Cómo buscar el texto en el archivo y Devuelve una ruta de archivo en la que se encuentra la palabra (Как искать часть текста в файле и возвращять путь к файлу в котором это слово)
En Main ()
fuente
encontrado = falso
fuente
Si el usuario quiere buscar la palabra en un archivo de texto dado.
fuente
fuente