diff --git a/dia_06/01_abrir_manipular_archivos.py b/dia_06/01_abrir_manipular_archivos.py new file mode 100644 index 0000000..c1a2f35 --- /dev/null +++ b/dia_06/01_abrir_manipular_archivos.py @@ -0,0 +1,73 @@ +""" +Abrir y manipular archivos +""" +# Abrir documento +archivo = open('prueba.txt') + +# Leer todo el documento +archivo_total = archivo.read() + +# print(archivo_total) +print(archivo_total) +archivo.close() + +print('-'*25) + +# Con este método se lee una sola línea +mi_archivo = open('prueba.txt') +una_linea = mi_archivo.readline() + +print(una_linea.upper()) +print(una_linea) + +una_linea = mi_archivo.readline() + +# Con el método rstrip no se efectuará salto de línea +print(una_linea.rstrip()) +una_linea = mi_archivo.readline() + +print(una_linea) +# close cierrar el archivo para no ocupar +# el espacio de memoria que deja abierto en open. +# Es importante usarlo siempre +mi_archivo.close() + +print('-'*25) + +archivo2 = open('prueba.txt') +# Se puede iterar por líneas +for l in archivo2: + print('Aquí dice que : ' + l) + +archivo2.close() + +print('-'*25) + +arch = open('prueba.txt') +# Con este método se meten las líneas en una lista. +# Hay que tener en cuenta que estos métodos que cargan +# todo el archivo deben usarse con modelación, +# ya que cargan mucho la memoria sobretodo si son +# ficheros grandes y el mismo muchas veces. +todas = arch.readlines() + +print(todas) + + +arch.close() + +print('-'*25) + +# Imprimir la segunda linea +txt = open('prueba.txt') + +list_txt = txt.readlines() + +cuenta_lineas = 0 +for l in list_txt: + cuenta_lineas += 1 + if cuenta_lineas == 2: + print(l) + +print() +txt.close() diff --git a/dia_06/02_crear_escribir_archivos.py b/dia_06/02_crear_escribir_archivos.py new file mode 100644 index 0000000..4308ccc --- /dev/null +++ b/dia_06/02_crear_escribir_archivos.py @@ -0,0 +1,21 @@ +""" +Crear y escribir archivos + +Sintaxis: +mi_archivo = open('archivo.txt',modo_apetura) +Argumentos de open() +r - Solo lectura - Por defecto +w - Solo escritura. Si el archivo ya existe se resetea +a - Añadir excritura, se posiciona al final. +x - Creación + +2 Métodos de escritura +write() Para escribir normal +writelines Para añadir texto en lista +""" + +mi_archivo = open('prueba.txt', 'w') +mi_archivo.write('\nEste texto se escribe desde python\n') +mi_archivo.writelines(['Hola', 'mundo', 'aquí', 'estoy']) + +mi_archivo.close() diff --git a/dia_06/03_directorios.py b/dia_06/03_directorios.py new file mode 100644 index 0000000..9678e4a --- /dev/null +++ b/dia_06/03_directorios.py @@ -0,0 +1,58 @@ +""" +Directorios + +Importaremos dos librerias: +Path de pathlib +os +""" +import os +from pathlib import Path + +# Obtener el directorio de trabajo actual +ruta = os.getcwd() +print(ruta) + +# Cambiar de directorio +ruta2 = os.chdir( + '/home/v/Documents/projectes/python/python_total/dia_06/Europa/') +# # Leer el fichero de esa ruta +archivo = open('Consejos.txt') + +print(archivo.read()) + +archivo.close() + +# Crear rutas nuevas +os.makedirs('/home/v/Documents/projectes/python/python_total/dia_06/Africa/') + +# Separar el path y el nombre del archivo + +ruta3 = '/home/v/Documents/projectes/python/python_total/dia_06/Europa/Consejos.txt' + +# # Nombre base del fichero o directorio de la ruta +elemento = os.path.basename(ruta3) +print(elemento) + +# # ruta completa menos base +elemento2 = os.path.dirname(ruta3) +print(elemento2) + +# # ruta completa en un tuple +elemento3 = os.path.split(ruta3) +print(elemento3) + +# Eliminar carpeta +os.rmdir('/home/v/Documents/projectes/python/python_total/dia_06/Africa/') + + +# Se importa el objeto Path de la libreria pathlib para los siguientes ejercicios +# Con Path buscará en cualquier SO +carpeta = Path( + '/home/v/Documents/projectes/python/python_total/dia_06/Europa') +archivo2 = carpeta / 'Consejos.txt' + +mi_archivo = open(archivo2) + +print(mi_archivo.read()) + +mi_archivo.close() diff --git a/dia_06/04_pathlib.py b/dia_06/04_pathlib.py new file mode 100644 index 0000000..33730b1 --- /dev/null +++ b/dia_06/04_pathlib.py @@ -0,0 +1,37 @@ +""" +pathlib + +Las que no tienen paréntesis son funciones, no métodos + +Se puede transformar a una ruta de windows importando PureWindowsPath + + PureWindowsPath(carpeta) + +""" +from pathlib import Path + +carpeta = Path( + '/home/v/Documents/projectes/python/python_total/dia_06/prueba.txt') + +print(carpeta.read_text()) + +# Nombre fichero +print(carpeta.name) + +# sufijo. Extensión +print(carpeta.suffix) + +# Nombre sin la terminación +print(carpeta.stem) + +# Ver si existe el fichero con un if +if not carpeta.exists(): + print("Este archivo no existe") +else: + print("Genial, existe") + +opcion = input("Escoger categoria: ") +if opcion.isnumeric(): + print('Es') +else: + print("no") diff --git a/dia_06/05_path.py b/dia_06/05_path.py new file mode 100644 index 0000000..28a3f8e --- /dev/null +++ b/dia_06/05_path.py @@ -0,0 +1,66 @@ +""" +path +""" + +# Ruta relativa + +from pathlib import Path + +guia = Path("Barcelona", "Sagrada_Familia.txt") + +print(guia) + +print("-"*25) +# Ruta absoluta al directorio de usuario activo + +base = Path.home() +# Con lo cual, si lo unimos a la ruta relativa +# nos dará una ruta absoluta +# (siguiento el path que le hemos dado) +# Admite cadenas como objetos de path +# podemos concatenar varios trozos de paths + +mi_ruta = Path('Documents/projectes/python/python_total/dia_06') +guia2 = Path(base, mi_ruta, "Europa", "España", Path( + "Barcelona", "Sagrada_Familia.txt")) + +print(base) +print(guia2) + +print("-"*25) +# Utilizando la ruta absoluta anterior, +# podemos cambiar el fichero de destino +guia3 = guia2.with_name("La_Pedrera.txt") + +print(guia3) + +print("-"*25) +# Acceder a directorios intermedios +# con parent accedemos al path superior cada vez que lo usamos +# Igual que los dos puntos en cd. (..) + +print(guia2.parent.parent.parent) + +print("-"*25) +# Enumerar todos los archivos txt +# # Primero hacemos la ruta +guia4 = Path(base, mi_ruta, "Europa") + +# # Con el método glob recorremos cada objeto de la ruta +# # con un for +for txt in Path(guia4).glob("*.txt"): + print(txt) + +print("-"*25) +# # Recursivo o_O +for txt in Path(guia4).glob("**/*.txt"): + print(txt) + +print("-"*25) +# Para acceder a rutas relativas a partir de una base de rutas absolutas +guia5 = Path("Europa", "España", "Barcelona", "Sagrada_Familia.txt") + +en_europa = guia5.relative_to("Europa") +en_espania = guia5.relative_to("Europa", "España") +print(en_europa) +print(en_espania) diff --git a/dia_06/06_limpiar_consola.py b/dia_06/06_limpiar_consola.py new file mode 100644 index 0000000..d3bb93b --- /dev/null +++ b/dia_06/06_limpiar_consola.py @@ -0,0 +1,23 @@ +""" +Limpiar consola + +Introducir comandos a la terminal o_O +""" +from os import system + + +def limpiar_consola(): + system('tree') + system('sleep 2') + system('clear') + + +nombre = input("Dime tu nombre: ") + +print("Ahora te voy a mostrar directorios y ficheros durante 2 segundos") + +system('sleep 2') + +limpiar_consola() + +print(f"¿Te quedo claro {nombre}?") diff --git a/dia_06/07_programa06.py b/dia_06/07_programa06.py new file mode 100644 index 0000000..4af50d9 --- /dev/null +++ b/dia_06/07_programa06.py @@ -0,0 +1,318 @@ +""" +Programa día 6 - Recetario +""" +import os +import shutil +from pathlib import Path + +""" +Variables +""" +ruta_base = Path('Recetas') +limpiar = 'clear' +sleep = 'sleep 2' + +""" +Funciones +""" + + +def clearConsole(): + # Función limpiar consola + os.system(limpiar) + + +def bienvenida(): + clearConsole() + # bienvenida al usuario + print('\n', '#' * 29, '\n # Bienvenid@ al Recetario #\n', '#' * 29) + os.system(sleep) + clearConsole() + info() + + +def info(): + + # informar la ruta de acceso al directorio donde se encuentran las recetas + print('*' * 17, '\n* INFORMACIÓN *\n*****************\n') + print('Las recetas están en las siguientes rutas:') + + for ruta in Path(ruta_base).glob('*'): + print(f'- {ruta}') + + # informar cuántas recetas hay en total dentro de esas carpetas + num_recetas = 0 + for ruta in Path(ruta_base).glob('**/*.txt'): + num_recetas += 1 + + # Mostra menú de opciones + print(f'\nEn total, existen {num_recetas} recetas.\n') + menu_opciones() + + +def menu_opciones(): + + comando = '' + while comando.lower() != 's': + print("""******************** +* MENÚ PRINCIPAL * +******************** + + i\t\tInformación + m\t\tMostrar recetas + cr\t\tCrear receta + cc\t\tCrear nueva categoria + er\t\tEliminar receta + ec\t\tEliminar categoria + s\t\tsalir + """) + + comando = input('Selecciona una opción: ') + clearConsole() + + if comando == 'i': + # Información + info() + elif comando == 'm': + com = "" + while com != 's': + # Mostrar recetas + cat = escoger_categoria() + rec = escoger_receta(cat) + mostrar_receta(rec) + + com = input("¿Quieres salir de \"Mostrar recetas\"? (s/n) ") + if com == 'n': + continue + elif com == 's': + print('\n¡Ok! Volvemos al menú pricipal\n') + break + else: + print('Disculpa, ingresa un valor válido') + continue + + elif comando == 'cr': + com = "" + while com != 's': + # Crear receta + cat = escoger_categoria() + crear_receta(cat) + + com = input("¿Quieres salir de \"Crear receta\"? (s/n) ") + if com == 'n': + continue + elif com == 's': + print('\n¡Ok! Volvemos al menú pricipal\n') + break + else: + print('Disculpa, ingresa un valor válido') + continue + + elif comando == 'cc': + + # Crear nueva categoria + crear_categoria() + + elif comando == 'er': + com = "" + while com != 's': + # Eliminar receta + cat = escoger_categoria() + rec = escoger_receta(cat) + eliminar_receta(rec) + + com = input("¿Quieres salir de \"eliminar receta\"? (s/n) ") + if com == 'n': + continue + elif com == 's': + print('\n¡Ok! Volvemos al menú pricipal\n') + break + else: + print('Disculpa, ingresa un valor válido') + continue + + elif comando == 'ec': + com = "" + while com != 's': + # Eliminar categoria + cat = escoger_categoria() + eliminar_categoria(cat) + + com = input("¿Quieres salir de \"eliminar categoria\"? (s/n) ") + if com == 'n': + continue + elif com == 's': + print('\n¡Ok! Volvemos al menú pricipal\n') + break + else: + print('Disculpa, ingresa un valor válido') + continue + + elif comando == 's': + # salir + break + else: + print('Disculpa, ingresa un valor válido') + os.system(sleep) + clearConsole() + info() + + +def escoger_categoria(): + # Opción 1 + # Pregunta qué categoría elige (carnes, ensaladas, etc.), + print('\nCategorías:') + + num_menu = 0 + lista_categorias = [] + for ruta in Path(ruta_base).glob('*'): + num_menu += 1 + lista_categorias.append(ruta.name) + print(f'\t{num_menu}\t {lista_categorias[num_menu - 1]}') + print('\n\ts\t salir de la opción \"escoger categoria\"\n') + + opcion = '' + while opcion != 's': + opcion = input('Escoger categoria: ') + + if opcion.isnumeric(): + + if int(opcion) in range(1, num_menu + 1): + categoria = lista_categorias[int(opcion) - 1] + return categoria + + else: + print(f'\nEl número {opcion} no está en el menú\n') + continue + elif opcion.lower() == 's': + return False + else: + print('Disculpa, ingresa un valor válido') + continue + return False + + +def escoger_receta(catego): + + if catego == False: + return False + else: + # una vez que el usuario elija una, preguntar qué receta quiere leer, + print( + f'\nEn la categoria \"{catego.upper()}\" hay las siguientes recetas: ') + + num_menu = 0 + lista_recetas = [] + for rut in Path(ruta_base, catego).glob('*'): + num_menu += 1 + lista_recetas.append(rut.name) + print(f'\t{num_menu}\t {lista_recetas[num_menu - 1]}') + print('\n\ts\t salir de la opción \"escoger receta\"\n') + + opcion = '' + while opcion != 's': + opcion = input('Escoger receta: ') + + if opcion.isnumeric(): + + if int(opcion) in range(1, num_menu + 1): + receta = lista_recetas[int(opcion) - 1] + ruta_escogida = Path(ruta_base, catego, receta) + # Devuelve receta escogida + return ruta_escogida + + else: + print(f'\nEl número {opcion} no está en el menú\n') + continue + elif opcion.lower() == 's': + return False + else: + print('Disculpa, ingresa un valor válido') + continue + + +def mostrar_receta(ruta_escogida): + + # mostrar contenido receta. + if ruta_escogida == False: + print() + + else: + clearConsole() + print( + f'\nRECETA \"{ruta_escogida.stem.upper()}\"\n{ruta_escogida.read_text()}\n') + + +def crear_receta(categoria): + # Opción 2 + # Elegir una categoría, + # va a pedir que escriba el nombre y el contenido de la nueva receta que quiere crear, + # El programa va a crear ese archivo en el lugar correcto. + if categoria == False: + print() + + else: + catego = Path(ruta_base, categoria) + + nombre = input('¿Cómo le quieres llamar a la receta? ') + + nueva_receta = nombre + ".txt" + + os.chdir(catego) + receta = open(nueva_receta.capitalize(), 'x') + receta.close() + + nuevo_texto = open(nueva_receta.capitalize(), 'w') + nuevo_texto.write(input('Escribe el contenido de la receta: ')) + nuevo_texto.close() + + os.chdir('../..') + + print(f'\nReceta de \"{nombre}\" creada con éxito\n') + + +def crear_categoria(): + # Opcion 3 + # Preguntar el nombre de la categoría que quiere crear + # Generar una carpeta nueva con ese nombre. + nueva_categ = input('¿Cómo quieres llamar la nueva categoria? ') + catego = Path(ruta_base, nueva_categ.capitalize()) + os.makedirs(catego) + + print(f'\nCategoria \"{nueva_categ}\" creada con éxito.\n') + + +def eliminar_receta(ruta_escogida): + # Opción 4 + # hará lo mismo que la opción uno, + # pero en vez de leer la receta, la va a eliminar. + if ruta_escogida == False: + print() + + else: + print( + f'Se ha eliminado la RECETA \"{ruta_escogida.stem.upper()}\"\n') + os.remove(ruta_escogida) + + +def eliminar_categoria(categoria): + # Opción 5 + # Preguntar qué categoría quiere eliminar + # Eliminar categoria + if categoria == False: + print() + + else: + catego = Path(ruta_base, categoria) + print( + f'Se ha eliminado la CATEGORIA \"{catego.stem.upper()}\"\n') + shutil.rmtree(catego) + + +""" +El programa se dispara en la función bienvenida +""" + +bienvenida() + +print('\n¡Ciao!\n') diff --git a/dia_06/Europa/Consejos.txt b/dia_06/Europa/Consejos.txt new file mode 100644 index 0000000..10b0ddb --- /dev/null +++ b/dia_06/Europa/Consejos.txt @@ -0,0 +1 @@ +Estos son los consejos \ No newline at end of file diff --git a/dia_06/Europa/España/Barcelona/La_Pedrera.txt b/dia_06/Europa/España/Barcelona/La_Pedrera.txt new file mode 100644 index 0000000..55e529f --- /dev/null +++ b/dia_06/Europa/España/Barcelona/La_Pedrera.txt @@ -0,0 +1 @@ +Esta es La Pedrera \ No newline at end of file diff --git a/dia_06/Europa/España/Barcelona/Sagrada_Familia.txt b/dia_06/Europa/España/Barcelona/Sagrada_Familia.txt new file mode 100644 index 0000000..59526b8 --- /dev/null +++ b/dia_06/Europa/España/Barcelona/Sagrada_Familia.txt @@ -0,0 +1 @@ +Esta es la sagrada Familia \ No newline at end of file diff --git a/dia_06/Europa/España/Madrid/Museo_del_Prado.txt b/dia_06/Europa/España/Madrid/Museo_del_Prado.txt new file mode 100644 index 0000000..19e9177 --- /dev/null +++ b/dia_06/Europa/España/Madrid/Museo_del_Prado.txt @@ -0,0 +1 @@ +Este es el Museo del Prado \ No newline at end of file diff --git a/dia_06/Europa/Francia/Paris/Torre Eiffel.txt b/dia_06/Europa/Francia/Paris/Torre Eiffel.txt new file mode 100644 index 0000000..e69de29 diff --git a/dia_06/Europa/Normativas.txt b/dia_06/Europa/Normativas.txt new file mode 100644 index 0000000..b1e247b --- /dev/null +++ b/dia_06/Europa/Normativas.txt @@ -0,0 +1 @@ +Estas son las normativas \ No newline at end of file diff --git a/dia_06/Recetas.zip b/dia_06/Recetas.zip new file mode 100644 index 0000000..09d087f Binary files /dev/null and b/dia_06/Recetas.zip differ diff --git a/dia_06/Recetas/Carnes/Entrecot al Malbec.txt b/dia_06/Recetas/Carnes/Entrecot al Malbec.txt new file mode 100644 index 0000000..26b4d2d --- /dev/null +++ b/dia_06/Recetas/Carnes/Entrecot al Malbec.txt @@ -0,0 +1 @@ +Esta es la receta del Entrecot al Malbec \ No newline at end of file diff --git a/dia_06/Recetas/Carnes/Matambre a la Pizza.txt b/dia_06/Recetas/Carnes/Matambre a la Pizza.txt new file mode 100644 index 0000000..8d69e57 --- /dev/null +++ b/dia_06/Recetas/Carnes/Matambre a la Pizza.txt @@ -0,0 +1 @@ +Esta es la receta del Matambre a la Pizza \ No newline at end of file diff --git a/dia_06/Recetas/Ensaladas/Ensalada Griega.txt b/dia_06/Recetas/Ensaladas/Ensalada Griega.txt new file mode 100644 index 0000000..246e15b --- /dev/null +++ b/dia_06/Recetas/Ensaladas/Ensalada Griega.txt @@ -0,0 +1 @@ +Esta es la receta de la Ensalada Griega \ No newline at end of file diff --git a/dia_06/Recetas/Ensaladas/Ensalada Mediterranea.txt b/dia_06/Recetas/Ensaladas/Ensalada Mediterranea.txt new file mode 100644 index 0000000..2cb9d4a --- /dev/null +++ b/dia_06/Recetas/Ensaladas/Ensalada Mediterranea.txt @@ -0,0 +1 @@ +Esta es la receta de la Ensalada Mediterranea \ No newline at end of file diff --git a/dia_06/Recetas/Pastas/Canelones de Espinaca.txt b/dia_06/Recetas/Pastas/Canelones de Espinaca.txt new file mode 100644 index 0000000..649aac5 --- /dev/null +++ b/dia_06/Recetas/Pastas/Canelones de Espinaca.txt @@ -0,0 +1 @@ +Esta es la receta de los Canelones de Espinaca \ No newline at end of file diff --git a/dia_06/Recetas/Pastas/Ravioles de Ricotta.txt b/dia_06/Recetas/Pastas/Ravioles de Ricotta.txt new file mode 100644 index 0000000..030884e --- /dev/null +++ b/dia_06/Recetas/Pastas/Ravioles de Ricotta.txt @@ -0,0 +1 @@ +Esta es la receta de los Ravioles de Ricotta diff --git a/dia_06/Recetas/Postres/Compota de Manzana.txt b/dia_06/Recetas/Postres/Compota de Manzana.txt new file mode 100644 index 0000000..45a2415 --- /dev/null +++ b/dia_06/Recetas/Postres/Compota de Manzana.txt @@ -0,0 +1 @@ +Esta es la receta de la Compota de Manzana \ No newline at end of file diff --git a/dia_06/Recetas/Postres/Flan.txt b/dia_06/Recetas/Postres/Flan.txt new file mode 100644 index 0000000..72a26c7 --- /dev/null +++ b/dia_06/Recetas/Postres/Flan.txt @@ -0,0 +1 @@ +Esta es la receta de FLAN de HUEVOS \ No newline at end of file diff --git a/dia_06/Recetas/Postres/Tarta de Frambuesa.txt b/dia_06/Recetas/Postres/Tarta de Frambuesa.txt new file mode 100644 index 0000000..1e08671 --- /dev/null +++ b/dia_06/Recetas/Postres/Tarta de Frambuesa.txt @@ -0,0 +1 @@ +Esta es la receta de la Tarta de Frambuesa \ No newline at end of file diff --git a/dia_06/Recetas/Postres/Trufas.txt b/dia_06/Recetas/Postres/Trufas.txt new file mode 100644 index 0000000..db9f02a --- /dev/null +++ b/dia_06/Recetas/Postres/Trufas.txt @@ -0,0 +1 @@ +Las TRUFAS están buenísimas \ No newline at end of file diff --git a/dia_06/Recetas/Verduras/Cesped.txt b/dia_06/Recetas/Verduras/Cesped.txt new file mode 100644 index 0000000..fb8f150 --- /dev/null +++ b/dia_06/Recetas/Verduras/Cesped.txt @@ -0,0 +1 @@ +Esto es el contenido de CESPED. Enjoy! \ No newline at end of file diff --git a/dia_06/prueba.txt b/dia_06/prueba.txt new file mode 100644 index 0000000..d2f2392 --- /dev/null +++ b/dia_06/prueba.txt @@ -0,0 +1,3 @@ + +Este texto se escribe desde python +Holamundoaquíestoy \ No newline at end of file