ADD dia 06

This commit is contained in:
Manuel Vergara 2023-04-12 21:59:04 +02:00
parent 78bd19b27b
commit 9b621581ca
26 changed files with 615 additions and 0 deletions

View File

@ -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()

View File

@ -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()

58
dia_06/03_directorios.py Normal file
View File

@ -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()

37
dia_06/04_pathlib.py Normal file
View File

@ -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")

66
dia_06/05_path.py Normal file
View File

@ -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)

View File

@ -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}?")

318
dia_06/07_programa06.py Normal file
View File

@ -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')

View File

@ -0,0 +1 @@
Estos son los consejos

View File

@ -0,0 +1 @@
Esta es La Pedrera

View File

@ -0,0 +1 @@
Esta es la sagrada Familia

View File

@ -0,0 +1 @@
Este es el Museo del Prado

View File

@ -0,0 +1 @@
Estas son las normativas

BIN
dia_06/Recetas.zip Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
Esta es la receta del Entrecot al Malbec

View File

@ -0,0 +1 @@
Esta es la receta del Matambre a la Pizza

View File

@ -0,0 +1 @@
Esta es la receta de la Ensalada Griega

View File

@ -0,0 +1 @@
Esta es la receta de la Ensalada Mediterranea

View File

@ -0,0 +1 @@
Esta es la receta de los Canelones de Espinaca

View File

@ -0,0 +1 @@
Esta es la receta de los Ravioles de Ricotta

View File

@ -0,0 +1 @@
Esta es la receta de la Compota de Manzana

View File

@ -0,0 +1 @@
Esta es la receta de FLAN de HUEVOS

View File

@ -0,0 +1 @@
Esta es la receta de la Tarta de Frambuesa

View File

@ -0,0 +1 @@
Las TRUFAS están buenísimas

View File

@ -0,0 +1 @@
Esto es el contenido de CESPED. Enjoy!

3
dia_06/prueba.txt Normal file
View File

@ -0,0 +1,3 @@
Este texto se escribe desde python
Holamundoaquíestoy