-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontroller.py
More file actions
114 lines (99 loc) · 2.94 KB
/
Copy pathcontroller.py
File metadata and controls
114 lines (99 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from readfile import ReadFile
from boyer_moore import buscar
from writefile import WriteFile
class ControladorBM:
'''
Esta clase se encarga de integrar todos los
componentes, creando así el funcionamiento
del programa
'''
def __init__(self):
'''
Constructor de la clase ControladorBM
'''
self.opcion = None
def menu_usuario(self):
'''
El menu que se desplega al usuario al ingresar al
programa
'''
print('-'*45)
print('Bievenido al programa de búsqueda de texto BM')
while True:
print('-'*45)
print('1. Introducir archivo de texto')
print('2. Introducir texto mediante consola')
print('3. Salir')
print('-'*45)
opcion = str(input('--> '))
print('-'*45)
try:
if int(opcion) < 4 and int(opcion) != 0:
self.opcion = opcion
break
else:
print('Opcion no válida, intente otra vez...')
except:
print('Opcion no válida, intente otra vez...')
def texto_pantalla(self):
'''
El proceso que se ejecuta si el usuario solicita
digitar la información por pantalla
'''
lineas_indice = []
list_contenido = []
print('-'*45)
contenido = str(input('Introduzca el contenido: '))
print('-'*45)
list_contenido.append(contenido)
patron = str(input('Introduzca el patron: '))
print('-'*45)
encontrado = buscar(contenido=contenido, patron=patron)
lineas_indice.append(encontrado)
escribir_archivo = WriteFile(contenido = list_contenido, patron=patron, lista_coincide=lineas_indice)
escribir_archivo.seleccionar_texto()
def preguntar_usuario_archivo(self):
'''
En caso de que el usuario digite la opción
de archivo, se le solicita que introduzca el nombre
:returns: el nombre del archivo
:rtype: str
'''
print('-'*45)
print('El archivo debe estar en la carpeta entrada...')
archivo = str(input('Introduzca el nombre del archivo: '))
return archivo
def usar_archivos(self):
'''
Implementación del código para archivos de texto
'''
lineas_indice = []
archivo_entrada = self.preguntar_usuario_archivo()
archivo = ReadFile(nombre_archivo=archivo_entrada)
archivo.leer_txt_lineas()
if archivo.existe:
contenido_archivo = archivo.obtener_contenido()
archivo.imprimir_lineas()
print('-'*45)
patron = str(input('Introduzca el patron: '))
print('-'*45)
for linea in contenido_archivo:
encontrado = buscar(contenido=linea, patron=patron)
lineas_indice.append(encontrado)
escribir_archivo = WriteFile(contenido = contenido_archivo, patron=patron, lista_coincide=lineas_indice)
escribir_archivo.seleccionar_texto()
def ejecutar_programa(self):
'''
Esta función integra todos los componentes
descritos en el menú en una sola función
haciendo los llamados necesarios
'''
self.menu_usuario()
if self.opcion == '1':
print('Utilizando archivos de texto...')
self.usar_archivos()
elif self.opcion == '2':
print('Utilizando texto en pantalla...')
self.texto_pantalla()
elif self.opcion == '3':
return