Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Geormarsch en 17 Julio 2017, 05:20 am



Título: [Python 3.5.2] Buscar dentro de un archivo de texto
Publicado por: Geormarsch en 17 Julio 2017, 05:20 am
Hola buenas noches.
Estoy haciendo éste código que por el momento crea un archivo de texto con lineas que almacenan un RUT y un TALLER.

Lo que quiero que haga la opción 2, sería buscar dentro del archivo de texto que se crea y luego leerlo y ver si es que el RUT se repite más de 1 vez, lógicamente hablando si se repite sería porque está con otro TALLER guardado.

Código:
195194467 chile
197632782 peru
195194467 colombia

Es ahí donde la opción 2 debería tener una salida así.

>> 195194467 chile
>> 195194467 colombia

Por el momento al tipear en la opcion 2 y busca en el archivo, sólo imprime el primer RUT que encuentra, ya que ahí termina el ciclo for, no sé como hacer para ver si en el archivo de texto hay más de 1 rut asociado con diferente TALLER

Código
  1. #!usr/bin/python
  2. #-*- coding: utf-8 -*-
  3.  
  4.  
  5.  
  6. def menu():
  7.  
  8.    print ("1 --- AGREGAR PERSONA")
  9.    print ("2 --- BUSCAR RUT")
  10.    print ("3 --- MOSTRAR BASE DE DATOS\n")
  11.  
  12.  
  13.    opcion = int(input("OPCIÓN: "))
  14.  
  15.    if opcion == 1:
  16.        print ("EL RUT DEBE SER INGRESADO SIN PUNTOS NI GUIÓN")
  17.        x = 0
  18.  
  19.        while (x == 0):
  20.            rut = input("RUT: ")
  21.            taller = input("TALLER: ")
  22.  
  23.            escritura_datos = open('base_datos_talleres_laborales.txt', 'a')
  24.            escritura_datos.write(rut)
  25.            escritura_datos.write(" ")
  26.            escritura_datos.write(str(taller + '\n'))
  27.  
  28.            continuar = str(input("CONTINUAR? (S/N): "))
  29.            if continuar == "s" or continuar == "S":
  30.                continue
  31.            if continuar == "n" or continuar == "N":
  32.                escritura_datos.close()
  33.                menu()
  34.  
  35.    if opcion == 2:
  36.        buscar_rut = input("RUT A BUSCAR: ")
  37.        leer_bd = open('base_datos_talleres_laborales.txt', 'r')
  38.  
  39.        for x in leer_bd:
  40.            if buscar_rut in x:
  41.                print (x)
  42.  
  43.            else:
  44.                print ("RUT NO REGISTRADO")
  45.                break
  46.  
  47.        print ("PRESIONA UNA TECLA PARA IR AL MENU")
  48.        tecla = input()
  49.        menu()
  50.  
  51.    if opcion == 3:
  52.        lectura = open('base_datos_talleres_laborales.txt', 'r')
  53.        imprimir = lectura.read()
  54.        print ('\n')
  55.        print (imprimir)
  56.        print ("PRESIONA UNA TECLA PARA IR AL MENU")
  57.        tecla = input()
  58.        menu()
  59.  
  60.    else:
  61.        print ("OPCIÓN NO VÁLIDA")
  62.        menu()
  63.  
  64.  
  65.  
  66.  
  67. menu()


Título: Re: [Python 3.5.2] Buscar dentro de un archivo de texto
Publicado por: ivancea96 en 17 Julio 2017, 20:58 pm
Tienes un else en el if. Si uno d elso registros que recorre no es lo que quieres, va a dar como que no existe. Simplemente, quita el else.

Luego, al acabar el for, comprueba si has encontrado algún registro o no (por ejemplo, poniendo una variable inicializada a false a true cuando entre en el if). En caso de que no, muestras el mensaje de que no se ha encontrado.