-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfunciones.py
119 lines (107 loc) · 5.03 KB
/
funciones.py
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
115
116
117
118
119
agenda = {}
def leer_agenda():
"""Lee el archivo agenda.txt y
guarda la informacion en el diccionario agenda.
La clave del diccionario es el orden en que se leen
los contactos de agenda.txt comenzando por el 1.
Cada indice tiene dentro un diccionario con los
datos del contacto: Nombre, Apellido y Teléfono.
Atrapa excepciones relacionadas al trabajo con archivos."""
try:
with open('agenda.txt', 'r', encoding="utf-8") as archivo:
lineas_agenda = archivo.readlines()
for linea in range(0, len(lineas_agenda), 4):
agenda[str(len(agenda) + 1)] = {
"Nombre": lineas_agenda[linea].split(": ")[1].strip(),
"Apellido": lineas_agenda[linea+1].split(": ")[1].strip(),
"Teléfono": lineas_agenda[linea+2].split(": ")[1].strip()
}
except FileNotFoundError:
print("El archivo no fue encontrado.")
except PermissionError:
print("No se tienen permisos para acceder al archivo.")
except Exception as e:
print(f"Error al leer la agenda: {e}")
def escribir_agenda():
"""Toma el contenido del diccionario agenda y lo escribe
en el archivo agenda.txt previo a borrar todo su contenido.
Atrapa excepciones relacionadas al trabajo con archivos."""
try:
with open('agenda.txt', 'w', encoding="utf-8") as archivo:
for contacto in agenda.values():
archivo.write(f"Nombre: {contacto['Nombre']}\n")
archivo.write(f"Apellido: {contacto['Apellido']}\n")
archivo.write(f"Teléfono: {contacto['Teléfono']}\n\n")
except FileNotFoundError:
print("El archivo no fue encontrado.")
except PermissionError:
print("No se tienen permisos para acceder al archivo.")
except Exception as e:
print(f"Ocurrió un error inesperado: {e}")
def agregar(nombre, apellido, telefono):
"""Agrega un contacto nuevo al diccionario si es que no existe,
si ya existe actualiza su telefono.
Args:
nombre (string): Nombre de la persona en la agenda.
apellido (string): Apellido de la persona en la agenda.
telefono (string): Número de telefono de la persona en la agenda."""
nombre = nombre.capitalize()
apellido = apellido.capitalize()
for contacto in agenda.values():
if contacto["Nombre"] == nombre and contacto["Apellido"] == apellido:
contacto["Teléfono"] = telefono
print("\n¡Contacto actualizado!\n")
escribir_agenda()
return
agenda[str(len(agenda) + 1)] = {"Nombre": nombre,
"Apellido": apellido, "Teléfono": telefono}
print("\n¡Contacto agregado correctamente!\n")
escribir_agenda()
def buscar(nombre, apellido):
"""Busca un contacto dentro de la agenda usando nombre y apellido.
Si lo encuentra lo muestra en pantalla,
si no lo encuentra muestra un mensaje en pantalla.
Args:
nombre (string): Nombre de la persona en la agenda.
apellido (string): Apellido de la persona en la agenda."""
nombre = nombre.capitalize()
apellido = apellido.capitalize()
for contacto in agenda.values():
if contacto["Nombre"] == nombre and contacto["Apellido"] == apellido:
print(f"\nContacto encontrado:\
\nNombre: {contacto['Nombre']}\
\nApellido: {contacto['Apellido']}\
\nTeléfono: {contacto['Teléfono']}\n")
return
print("\nContacto no encontrado.\n")
def importar():
"""Lee el contendio del archivo importar.txt, lo almacena en el
diccionario de la agenda y llama a la funcion escribir_agenda
para actualizar el archivo agenda.txt.
Si el contacto a importar ya existe en la agenda, actualiza su teléfono.
Atrapa excepciones relacionadas al trabajo con archivos."""
try:
with open('importar.txt', 'r', encoding="utf-8") as archivo:
lineas_archivo = archivo.readlines()
for linea in range(0, len(lineas_archivo), 4):
nombre = lineas_archivo[linea].split(": ")[1].strip()
apellido = lineas_archivo[linea+1].split(": ")[1].strip()
telefono = lineas_archivo[linea+2].split(": ")[1].strip()
agregar(nombre, apellido, telefono)
except FileNotFoundError:
print("El archivo no fue encontrado.")
except PermissionError:
print("No se tienen permisos para acceder al archivo.")
except Exception as e:
print(f"Ocurrió un error inesperado: {e}")
def imprimir_agenda():
"""Imprime en pantalla todos los contactos
guardados en el diccionario agenda."""
if not agenda:
print("\n¡La agenda está vacía.!\n")
return
for contacto, datos in agenda.items():
print(f"Contacto {contacto}:\
\n Nombre: {datos['Nombre']}\
\n Apellido: {datos['Apellido']}\
\n Teléfono: {datos['Teléfono']}\n")