ADD dia 09

This commit is contained in:
Manuel Vergara 2023-04-12 21:59:21 +02:00
parent f321a35e8d
commit 35491ac02e
82 changed files with 905 additions and 0 deletions

View File

@ -0,0 +1,74 @@
"""
Módulo collections
Counter - Es una especia de diccionario
que cuentas elementos de una lista, tupla o string
DefaultDict - Da valores por defecto
NamedTuple - Tupla con nombres.
Sirve para tener nombres además de índices
deque - contenedor similar a una lista con appends
y pops rápidos en ambos extremos
"""
from collections import Counter, defaultdict, namedtuple, deque
# Counter
numeros = [8, 6, 9, 5, 4, 5, 5, 5, 8, 7, 4, 3, 5, 4, 4]
print(Counter(numeros))
print(Counter('mississippi'))
print()
# Se puede utilizar módulos de Counter
serie = Counter([1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4])
# En orden del más común a menos
print(serie.most_common())
# Podemos meter Counter en una lista
print(list(serie))
print()
# DefaultDict
mi_dic = defaultdict(lambda: 'nada')
mi_dic['uno'] = 'verde'
# Cuando se llama a un valor que no existe
# defaultdict lo añadirá con el valor por defecto
print(mi_dic['cuatro'])
print(mi_dic)
print()
# NamedTuple
# Creamos una clase y con NamedTuple nombramos
# a los elementos de la tupla
Persona = namedtuple('Persona', ['nombre', 'altura', 'peso'])
# Damos valores
ariel = Persona('Ariel', 1.76, 67)
# y podemos imprimir por el nombre dado
print(ariel.altura)
print(ariel.peso)
# Sin perder la manera clásica de llamarle
# por el índice
print(ariel[0])
# deque
lista_ciudades = deque(
["Londres", "Berlin", "París", "Madrid", "Roma", "Moscú"])
lista_ciudades.appendleft('Badajoz')
print(lista_ciudades)

View File

@ -0,0 +1,85 @@
"""
Módulos os y shutil
También método send2trash
"""
import os
import shutil
import send2trash
# Mostrar el directorio actual
print(os.getcwd())
# Vamos a abrir un archivo. Como no existe se creará.
# Usamos la 'w' para escribir en él
archivo = open('curso.txt', 'w')
archivo.write('texto de prueba')
archivo.close()
print()
# Mostrar archivos de la ubicación actual
print(os.listdir())
print()
# Mover archivos con shutil
# Movemos curso al día_08
# Se puede con rutas relativas o absolutas
shutil.move('curso.txt', '../dia_08')
# Varios métodos para eliminar ficheros
# unlink - Elimina los ficheros de la ruta que digas
# os.unlink(path)
# rmdir - Elimina directorios de la ruta que digas
# os.rmdir(path)
# rmt - Eliminar todo CUIDAO Elimina todo y es irreversible
# shutil.rmt
# Pongo una pausa para ver como
# se crea y elimina el fichero
sleep = 'sleep 3'
os.system(sleep)
# Para eliminar enviando a la papelera
# mejor con el método send2trash
send2trash.send2trash('../dia_08/curso.txt')
# walk - Recorrer carpetas
# Si lo imprimimos directamente
# nos dice que es un generator
print(os.walk('../..'))
# así que la info la proporciona tal como se le pide
print()
# Creamos una variable con la ruta
ruta = '../dia_08'
# Hay que tener en cuenta que guarda tuplas con
# - carpetas
# - subcarpetas
# - ficheros
# Vamos a extraerlo con un iterador
for carpeta, subcarpeta, fichero in os.walk(ruta):
print(f'En la carpeta: {carpeta}')
print(f'Las subcarpetas son:')
for sub in subcarpeta:
print(f'\t{sub}')
print('Los archivos son: ')
for arch in fichero:
# En los ficheros le vamos a poner un filtro
# para que imprima solo lo que nos interesa
if arch.startswith('0'):
print(f'\t{arch}')
print()

View File

@ -0,0 +1,32 @@
"""
Módulo datime
Primera parte
- Almacenar hora y fecha en variables
- Cálculos de tiempo
- Mostrar en diferentes formatos
"""
import datetime
# Guardar en una variable la hora
mi_hora = datetime.time(17, 35, 50, 1300)
# Imprimir tipo de formato
print(f'Formato de datetime: {type(mi_hora)}')
# Imprimir la hora establecida
print(mi_hora)
# Imprimir un elemento de la hora
print(mi_hora.minute)
print()
# Guardar en variable la fecha
mi_fecha = datetime.date(2025, 10, 23)
# Mostrar fecha
print(mi_fecha)
# Mostrar un elemento de fecha
print(mi_fecha.year)
# Cambiar el formato a la fecha
print(mi_fecha.ctime())
# Mostrar el día de hoy
print(mi_fecha.today())

View File

@ -0,0 +1,59 @@
"""
Módulo datime
Segunda parte
"""
from datetime import datetime, timedelta, date
# Para los siguientes ejercicios
# se debe importar un objeto
# llamado datetime que se encuentra
# en el módulo datetime, el cuál crea conflicto
# con el anterior ejercicio import datetime
mi_dia = datetime(2025, 5, 15, 22, 10, 15, 2500)
print(mi_dia)
# Se puede reemplazar elementos
mi_dia = mi_dia.replace(month=11)
print(mi_dia)
print()
# Se pueden calcular tiempos
# se debe importar date
# Variables de nacimiento y de hoy
nacimiento = date(1983, 10, 30)
hoy = date.today()
# Se resta
tiempo_vida = hoy - nacimiento
# Se muestra en dias
print(tiempo_vida.days)
# También podemos calcular horas
despertar = datetime(2023, 3, 30, 6, 30)
dormir = datetime(2023, 3, 30, 23, 35)
tiempo_despierto = dormir - despertar
# Podemos verlo en segundos
print(tiempo_despierto.seconds)
print()
# Minutos ahora
hoys = datetime(2100, 10, 20, 10, 20).today().time().minute
print(hoys)
# Calcular el tiempo
# Extra. Importo timedelta para probarlo
hora_actual = datetime.now() + timedelta(hours=5, minutes=50)
print('{:%H:%M}'.format(hora_actual))

View File

@ -0,0 +1,108 @@
"""
Módulo para medir tiempo
time - puedes realizar marcas de tiempo en el código
para poder hacer comparaciones
timeit - Más especifico, muestra cuanto tarda en ejecutarse un código.
"""
import time
import timeit
# Dos funciones con formas distintas
# de hacer código
# para el mismo resultado:
def prueba_for(numero):
""" Prueba de iteración for """
lista = []
for num in range(1, numero+1):
lista.append(num)
return lista
def prueba_while(numero):
""" Prueba de iteración while """
lista = []
contador = 1
while contador <= numero:
lista.append(contador)
contador += 1
return lista
# Vamos a identificar cual de las dos funciones
# resuelve de manera más eficiente
# con el módulo time, haciendo
# marcas de tiempo
inicio = time.time()
prueba_for(1000000)
final = time.time()
print(f' La función for tardó: {final - inicio}')
inicio = time.time()
prueba_while(1000000)
final = time.time()
print(f' La función while tardó: {final - inicio}')
print()
# timeit puede identificar
# cuanto tarda con más precisión
"""
Sintaxis:
duracion = timeit.timeit(declaracion, setup, number = numero)
declaracion: recibe el código que cuya duración
de ejecución queremos medir.
es la invocación mi función
setup: recibe las instrucciones que el parámetro
declaracion requiere para funcionar.
es la definición (def...) de mi función
number: cantidad de veces que se evaluará el
código para obtener su tiempo de ejecución mínimo.
pueden ser varios miles o cientos de veces (dependiendo de la complejidad)
"""
declaracion = '''
prueba_for(10)
'''
mi_setup = '''
def prueba_for(numero):
""" Prueba de iteración for """
lista = []
for num in range(1, numero+1):
lista.append(num)
return lista
'''
duracion_for = timeit.timeit(declaracion, mi_setup, number=10000000)
print(f' La función for tardó: {duracion_for}')
declaracion2 = '''
prueba_while(10)
'''
mi_setup2 = '''
def prueba_while(numero):
""" Prueba de iteración while """
lista = []
contador = 1
while contador <= numero:
lista.append(contador)
contador += 1
return lista
'''
duracion_while = timeit.timeit(declaracion2, mi_setup2, number=10000000)
print(f' La función while tardó: {duracion_while}')

51
dia_09/05_modulo_math.py Normal file
View File

@ -0,0 +1,51 @@
"""
Módulo math
Contiene el kit completo para trabajar con números:
Matemática clásica y avanzada.
También existe el módulo numpy
que es más avanzado aún. https://numpy.org/
"""
import math
# EJEMPLOS
# Redondeo hacia abajo, hacia el piso
resultado = math.floor(90.99999)
print(resultado)
# Redondeo hacia arriba, hacia el techo
resultado = math.ceil(90.11111)
print(resultado)
# Mostrar pi
resultado = math.pi
print(resultado)
# Calcular un log, en función de un número
# y una base, saber por cuanto deberíamos exponer
# la base para llegar al número
resultado = math.log(625, 5)
print(resultado)
# Calcular en base 10
resultado = math.log10(25)
print(resultado)
# Calcular la tangente
resultado = math.tan(2565)
print(resultado)
# Calcular la coseno
resultado = math.cos(2565)
print(resultado)
# Calcular la raíz cuadrada de pi
resultado = math.sqrt(math.pi)
print(resultado)
# Calcular factorial
resultado = math.factorial(7)
print(resultado)

222
dia_09/06_modulo_re.py Normal file
View File

@ -0,0 +1,222 @@
"""
Módulo re
Expresiones regulares
Operadores especiales:
[ ] un set de caracteres
. un carácter cualquiera
^ inicia con
$ finaliza con
| operador lógico "O"
Cuantificadores:
* cero o más ocurrencias: 0 - n
+ una o más ocurrencias: 1 - n
? cero o una ocurrencia: 0 - 1
{ } un número especificado de ocurrencias
{n} se repite n veces
{n,m} se repite de n a m veces
{n, } se repite de n veces hacia arriba
Carácteres especiales:
\d dígito numérico
\D NO numérico
\w caracter alfanumérico
\W NO alfanumérico
\s espacio en blanco
\S NO espacio en blanco
"""
import re
# Buscar este patrón: ### - #### - ####
# De diferentes formas:
patron1 = r'\d\d\d-\d\d\d-\d\d\d\d'
patron2 = r'\d{3}-\d{3}-\d{4}'
# Si no existe dirá: Node
verificacion01 = re.search(patron1, '234-233-l23l')
# Si existe dirá que tiene match:
# <re.Match object; span=(0, 12), match='234-233-1231'>
verificacion02 = re.search(patron1, '234-233-1231')
print(
f'La verificación 1 es {verificacion01}\nLa verificación 2 es {verificacion02}')
print()
# Usando un texto
texto = 'Si necesitas ayuda llama al (658)-598-9977 las 24 horas al servicio de ayuda online'
palabra = 'ayuda' in texto
print(f'Es {palabra} que la palabra ayuda está en el texto')
# Con expresión regular
patron03 = 'ayuda'
# Busqueda es un objeto regular expresión
# en concreto search
busqueda01 = re.search(patron03, texto)
# con lo cual, tiene módulos
# span indica la ubicación
print(busqueda01.span())
# start indica la ubicación del inicio
print(busqueda01.start())
# end indica la ubicación del final
print(busqueda01.end())
print()
# Objeto findall
# Mete en una lista cada vez que aparece el patron
busqueda02 = re.findall(patron03, texto)
print(busqueda02)
# Podemos ver el número de veces con len
print(len(busqueda02))
print()
# Podemos iterar la búsqueda
# con el módulo finiter para
# tener información de cada resultado encontrado
for hallazgo in re.finditer(patron03, texto):
print(hallazgo.span())
print()
# Vamos a buscar el número de teléfono del texto
# se puede escapar los paréntesis para que los búsque
# y agrupar con parétesis
patron04 = r'\((\d{3})\)-(\d{3})-(\d{4})'
busqueda03 = re.search(patron04, texto)
# Podemos mostrar el resultado mostrando los grupos
print(busqueda03.group())
# y como además los hemos encerrado en paréntesis
# podemos llamar a cada uno de los grupos
print(busqueda03.group(2))
# Podemos controlar la entrada del usuario
# ⚠️ Cuidao: Este método no sirve para verificar contraseñas
# por ejemplo:
#
print("""
Introduce una clave con las condiciones:
- Empezar con una letra
- En total 8 carácteres
""")
clave = input('> ')
patron05 = r'\D{1}\w{7}'
chequear = re.search(patron05, clave)
print(chequear)
print()
# Operadores especiales
# or
buscarunouotro = re.search(r'online|offline', texto)
print(buscarunouotro.group())
print()
# Comodin en un espacio con punto
comodin01 = re.search(r'...vicio', texto)
print(comodin01.group())
print()
# Comodin inicio con ^
# Por ejemplo, que el primer caracter no sea un dígito
comodin02 = re.search(r'^\D', texto)
print(comodin02.group())
print()
# Comodin final con $
# Por ejemplo, que el último caracter sea un dígito
comodin03 = re.search(r'\d$', texto)
print(comodin03)
print()
# Comodin de un set de caracteres con [^]
# Por ejemplo, todos los que incluyan un carácter vacío
comodin04 = re.findall(r'[^\S]', texto)
print(f'El texto contiene {len(comodin04)} espacios en blanco')
print()
# Comodin de un set de caracteres con [^+]
# Ahora, además, va a agrupar los que no son
# espacios vacíos en strings dentro de la lista
# Seleciona cada inicio con caracter hasta que
# encuentra otro espacio en blanco.
comodin05 = re.findall(r'[^\s]+', texto)
print(comodin05)
# Con esto y join podemos unir de nuevo el texto pero
# sustituyendo con guiones, por ejemplo.
# Puede servir para corregir nombres de ficheros o directorios.
print('-'.join(comodin05))
# EJERCICIOS
print()
# Verificar si es un mail
def verificar_email(email):
""" Verificar sin es un mail .com """
patron = r'[\w]*@[\w]*\.com[\w]*'
verificacion = re.search(patron, email)
if verificacion:
print("Ok. Es un mail")
else:
print("La dirección de email es incorrecta")
verificar_email("email@mail.com")
print()
# Verificar saludo
def verificar_saludo(frase):
""" Verificar si saluda con Hola """
patron = r'^Hola'
verificacion = re.search(patron, frase)
if verificacion:
print("Ok. Este mensaje tiene saludo al inicio")
else:
print("No has saludado")
verificar_saludo("Hola, que tal?")
print()
# Verificar Código postal.
# Dos caracteres alfanuméricos
# y cuatro numéricos a continuación
# (ejemplo: XX1234)
def verificar_cp(cp):
""" Verificar si saluda con Hola """
patron = r'^\w{2}\d{4}$'
verificacion = re.search(patron, cp)
if verificacion:
print("Ok. Es un código postal")
else:
print("El código postal ingresado no es correcto")
verificar_cp("XX1234")

View File

@ -0,0 +1,15 @@
"""
Módulos comprimir y descomprimir
shutil - Nos permite comprimir
todos los archivos y directorios de una carpeta
"""
import shutil
carpeta_origen = 'carpeta_superior'
archivo_destino = 'todo_comprimido'
shutil.make_archive(archivo_destino, 'zip', carpeta_origen)

View File

@ -0,0 +1,15 @@
"""
Módulos comprimir y descomprimir
zipfile
"""
import zipfile
mi_zip = zipfile.ZipFile('archivo_comprimido.zip', 'w')
mi_zip.write('mi_texto_A.txt')
mi_zip.write('mi_texto_B.txt')
mi_zip.close()

View File

@ -0,0 +1,10 @@
"""
Módulos comprimir y descomprimir
shutil
"""
import shutil
shutil.unpack_archive('todo_comprimido.zip', 'extraccion_terminada', 'zip')

View File

@ -0,0 +1,13 @@
"""
Módulos comprimir y descomprimir
zipfile
"""
import zipfile
zip_abierto = zipfile.ZipFile('archivo_comprimido.zip', 'r')
zip_abierto.extractall()

View File

@ -0,0 +1,8 @@
"""
Descomprimir proyecto día 9
"""
import shutil
shutil.unpack_archive('Proyecto+Dia+9.zip', '09_Programa09', 'zip')

View File

@ -0,0 +1,46 @@
¡Qué bueno que lograste abrirme!
Junto a esta nota se ha descomprimido 1 carpeta, y está repletas de subcarpetas y de archivos .txt.
No te preocupes por revisarlos, solo tienen texto aleatorio... excepto algunos. ¯\_(ツ)_/¯
Tu trabajo es crear un Buscador de Números de Serie. ¿Qué es eso? Es un programa que se encargue de buscar números de serie que cumplan un determinado formato, dentro de un arbol de carpetas.
Tu programa va a recorrer todos los archivos y subcarpetas de un directorio raiz (en este caso, la carpeta que acabas de descomprimir), y va a buscar cualquier string que coincida con un patrón de número de serie. Sabemos que no puede haber más de un número de serie por archivo.
Para lograrlo vas a usar el módulo os para abrir e iterear por el directorio, y las expresiones regulares para encontrar el formato de número de serie correcto.
A los fines de este ejercicio, estas son las condiciones de formato que deben cumplir los hallazgos:
- [N] + [tres carateres de texto] + [-] + [5 números]
Por ejemplo: Nryu-12365
La presentación en pantalla de los hallazgos debe ser un listado en formato de tabla, que respete el siguiente formato de ejemplo:
----------------------------------------------------
Fecha de búsqueda: [fecha de hoy]
ARCHIVO NRO. SERIE
------- ----------
texto1.txt Nter-15496
texto25.txt Ngba-85235
Números encontrados: 2
Duración de la búsqueda: 1 segundos
----------------------------------------------------
IMPORTANTE
* La 'Duración de búsqueda' debe estar redondeada hacia arriba
* No olvides que la mejor forma de recorrer un arbol de carpetas, probablemente sea con el método walk() de os.
* Observa que la fecha de búsqueda debe ser la fecha del día en que ejecutes el código, por lo que necesitas echar mano del módulo datetime.
* Animate a encontrar una manera de mostrar la fecha de hoy con el formato dd/mm/aa.
* Para informar la duración de la búsqueda al final de tu presentación, vas a necesitar del módulo time.
* Recuerda que para poder imprimir todo en formato de tabla puedes usar los caracteres especiales \t para tabular.

View File

@ -0,0 +1 @@
Curabitur eget bibendum dolor. Praesent eu metus ac neque convallis pharetra. Phasellus in enim lobortis, volutpat orci sit amet, scelerisque tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ultricies in nulla et facilisis. Pellentesque justo ipsum, pellentesque sed convallis et, feugiat quis nulla. Aliquam maximus elementum nisl non rutrum. Suspendisse id malesuada ante. Phasellus commodo ex quis orci iaculis finibus.

View File

@ -0,0 +1 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent in tellus porta, vehicula nisl vel, ultrices orci. Mauris egestas, lectus eget consectetur dictum, dui lectus suscipit nulla, vitae tristique elit orci dignissim elit. Sed fermentum elementum odio, sit amet rhoncus nibh pellentesque eu. Proin sit amet porttitor lorem. Cras urna orci, molestie a semper quis, commodo non augue. Vestibulum blandit pellentesque lectus, sit amet dignissim orci finibus quis. In sem metus, pellentesque eget ultrices ac, tempor eleifend ligula.

View File

@ -0,0 +1 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent in tellus porta, vehicula nisl vel, ultrices orci. Mauris egestas, lectus eget consectetur dictum, dui lectus suscipit nulla, vitae tristique elit orci dignissim elit. Sed fermentum elementum Nhjn-54885 odio, sit amet rhoncus nibh pellentesque eu. Proin sit amet porttitor lorem. Cras urna orci, molestie a semper quis, commodo non augue. Vestibulum blandit pellentesque lectus, sit amet dignissim orci finibus quis. In sem metus, pellentesque eget ultrices ac, tempor eleifend ligula.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Fusce at ornare sapien. Curabitur vestibulum nibh in neque tincidunt, non interdum ante semper. Vivamus eget scelerisque eros. Vestibulum egestas elementum congue. Ut hendrerit ultrices nunc, quis elementum arcu. Fusce ullamcorper quam accumsan, commodo augue ac, viverra ipsum. Nlkj-41523 Pellentesque venenatis vehicula felis id placerat. Praesent mollis lobortis lorem, vel efficitur risus mollis eget. Quisque molestie sapien quis enim ultrices mollis nec eu lacus.

View File

@ -0,0 +1 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent in tellus porta, vehicula nisl vel, ultrices orci. Mauris egestas, lectus eget consectetur dictum, dui lectus suscipit nulla, vitae tristique elit orci dignissim elit. Sed fermentum elementum odio, sit amet rhoncus nibh pellentesque eu. Proin sit amet porttitor lorem. Cras urna orci, molestie a semper quis, commodo non augue. Vestibulum blandit pellentesque lectus, sit amet dignissim orci finibus quis. In sem metus, pellentesque eget ultrices ac, tempor eleifend ligula.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Nann-74705 Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent in tellus porta, vehicula nisl vel, ultrices orci. Mauris egestas, lectus eget consectetur dictum, dui lectus suscipit nulla, vitae tristique elit orci dignissim elit. Sed fermentum elementum odio, sit amet rhoncus nibh pellentesque eu. Proin sit amet porttitor lorem. Cras urna orci, molestie a semper quis, commodo non augue. Vestibulum blandit pellentesque lectus, sit amet dignissim orci finibus quis. In sem metus, pellentesque eget ultrices ac, tempor eleifend ligula.

View File

@ -0,0 +1 @@
Curabitur eget bibendum dolor. Praesent eu metus ac neque convallis pharetra. Phasellus in enim lobortis, volutpat orci sit amet, scelerisque tellus. Nqqs-82506 Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ultricies in nulla et facilisis. Pellentesque justo ipsum, pellentesque sed convallis et, feugiat quis nulla. Aliquam maximus elementum nisl non rutrum. Suspendisse id malesuada ante. Phasellus commodo ex quis orci iaculis finibus.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Curabitur eget bibendum dolor. Praesent eu metus ac neque convallis pharetra. Phasellus in enim lobortis, volutpat orci sit amet, scelerisque tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ultricies in nulla et facilisis. Pellentesque justo ipsum, pellentesque sed convallis et, feugiat quis nulla. Aliquam maximus elementum nisl non rutrum. Suspendisse id malesuada ante. Phasellus commodo ex quis orci iaculis finibus.

View File

@ -0,0 +1 @@
Fusce at ornare sapien. Curabitur vestibulum nibh in neque tincidunt, non interdum ante semper. Vivamus eget scelerisque eros. Vestibulum egestas elementum congue. Ut hendrerit ultrices nunc, quis elementum arcu. Nopp-10052 Fusce ullamcorper quam accumsan, commodo augue ac, viverra ipsum. Pellentesque venenatis vehicula felis id placerat. Praesent mollis lobortis lorem, vel efficitur risus mollis eget. Quisque molestie sapien quis enim ultrices mollis nec eu lacus.

View File

@ -0,0 +1 @@
Fusce at ornare sapien. Curabitur vestibulum nibh in neque tincidunt, non interdum ante semper. Vivamus eget scelerisque eros. Vestibulum egestas elementum congue. Ut hendrerit ultrices nunc, quis elementum arcu. Nmrn-20155 Fusce ullamcorper quam accumsan, commodo augue ac, viverra ipsum. Pellentesque venenatis vehicula felis id placerat. Praesent mollis lobortis lorem, vel efficitur risus mollis eget. Quisque molestie sapien quis enim ultrices mollis nec eu lacus.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Curabitur eget bibendum dolor. Praesent eu metus ac neque convallis pharetra. Phasellus in enim lobortis, volutpat orci sit amet, scelerisque tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ultricies in nulla et facilisis. Pellentesque justo ipsum, pellentesque sed convallis et, feugiat quis nulla. Aliquam maximus elementum nisl non rutrum. Suspendisse id malesuada ante. Phasellus commodo ex quis orci iaculis finibus.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam Njko-60603 tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Fusce at ornare sapien. Curabitur vestibulum nibh in neque tincidunt, non interdum ante semper. Vivamus eget scelerisque eros. Vestibulum egestas elementum congue. Ut hendrerit ultrices nunc, quis elementum arcu. Fusce ullamcorper quam accumsan, commodo augue ac, viverra ipsum. Pellentesque venenatis vehicula felis id placerat. Praesent mollis lobortis lorem, vel efficitur risus mollis eget. Quisque molestie sapien quis enim ultrices mollis nec eu lacus.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Curabitur eget bibendum dolor. Praesent eu metus ac neque convallis pharetra. Phasellus in enim lobortis, volutpat orci sit amet, scelerisque tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ultricies in nulla et facilisis. Pellentesque justo ipsum, pellentesque sed convallis et, feugiat quis nulla. Aliquam maximus elementum nisl non rutrum. Suspendisse id malesuada ante. Phasellus commodo ex quis orci iaculis finibus.

View File

@ -0,0 +1 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent in tellus porta, vehicula nisl vel, ultrices orci. Mauris egestas, lectus eget consectetur dictum, dui lectus suscipit nulla, vitae tristique elit orci dignissim elit. Sed fermentum elementum odio, sit amet rhoncus nibh pellentesque eu. Proin sit amet porttitor lorem. Cras urna orci, molestie a semper quis, commodo non augue. Vestibulum blandit pellentesque lectus, sit amet dignissim orci finibus quis. In sem metus, pellentesque eget ultrices ac, tempor eleifend ligula.

View File

@ -0,0 +1 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent in tellus porta, vehicula nisl vel, ultrices orci. Mauris egestas, lectus eget consectetur dictum, dui lectus suscipit nulla, vitae tristique elit orci dignissim elit. Sed fermentum elementum odio, sit amet rhoncus nibh pellentesque eu. Nbbg-90999 Proin sit amet porttitor lorem. Cras urna orci, molestie a semper quis, commodo non augue. Vestibulum blandit pellentesque lectus, sit amet dignissim orci finibus quis. In sem metus, pellentesque eget ultrices ac, tempor eleifend ligula.

View File

@ -0,0 +1 @@
Fusce at ornare sapien. Curabitur vestibulum nibh in neque tincidunt, non interdum ante semper. Vivamus eget scelerisque eros. Vestibulum egestas elementum congue. Ut hendrerit ultrices nunc, quis elementum arcu. Fusce ullamcorper quam accumsan, commodo augue ac, viverra ipsum. Pellentesque venenatis vehicula felis id placerat. Praesent mollis lobortis lorem, vel efficitur risus mollis eget. Quisque molestie sapien quis enim ultrices mollis nec eu lacus.

View File

@ -0,0 +1 @@
Fusce at ornare sapien. Curabitur vestibulum nibh in neque tincidunt, non interdum ante semper. Vivamus eget scelerisque eros. Vestibulum egestas elementum congue. Ut hendrerit ultrices nunc, quis elementum arcu. Fusce ullamcorper quam accumsan, commodo augue ac, viverra ipsum. Pellentesque venenatis vehicula felis id placerat. Praesent mollis lobortis lorem, vel efficitur risus mollis eget. Quisque molestie sapien quis enim ultrices mollis nec eu lacus.

View File

@ -0,0 +1 @@
Fusce at ornare sapien. Curabitur vestibulum nibh in neque tincidunt, non interdum ante semper. Vivamus eget scelerisque eros. Vestibulum egestas elementum congue. Ut hendrerit ultrices nunc, quis elementum arcu. Fusce ullamcorper quam accumsan, commodo augue ac, viverra ipsum. Pellentesque venenatis vehicula felis id placerat. Praesent mollis lobortis lorem, vel efficitur risus mollis eget. Quisque molestie sapien quis enim ultrices mollis nec eu lacus.

View File

@ -0,0 +1 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent in tellus porta, vehicula nisl vel, ultrices orci. Mauris egestas, lectus eget consectetur dictum, dui lectus suscipit nulla, vitae tristique elit orci dignissim elit. Sed fermentum elementum odio, sit amet rhoncus nibh pellentesque eu. Proin sit amet porttitor lorem. Cras urna orci, molestie a semper quis, commodo non augue. Vestibulum blandit pellentesque lectus, sit amet dignissim orci finibus quis. In sem metus, pellentesque eget ultrices ac, tempor eleifend ligula.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Curabitur eget bibendum dolor. Praesent eu metus ac neque convallis pharetra. Phasellus in enim lobortis, volutpat orci sit amet, scelerisque tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ultricies in nulla et facilisis. Pellentesque justo ipsum, pellentesque sed convallis et, feugiat quis nulla. Aliquam maximus elementum nisl non rutrum. Suspendisse id malesuada ante. Phasellus commodo ex quis orci iaculis finibus.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor Nwwe-88985 Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Curabitur eget bibendum dolor. Praesent eu metus ac neque convallis pharetra. Phasellus in enim lobortis, volutpat orci sit amet, scelerisque tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin ultricies in nulla et facilisis. Pellentesque justo ipsum, pellentesque sed convallis et, feugiat quis nulla. Aliquam maximus elementum nisl non rutrum. Suspendisse id malesuada ante. Phasellus commodo ex quis orci iaculis finibus.

View File

@ -0,0 +1 @@
Fusce at ornare sapien. Curabitur vestibulum nibh in neque tincidunt, non interdum ante semper. Vivamus eget scelerisque eros. Vestibulum egestas elementum congue. Ut hendrerit ultrices nunc, quis elementum arcu. Fusce ullamcorper quam accumsan, commodo augue ac, viverra ipsum. Pellentesque venenatis vehicula felis id placerat. Praesent mollis lobortis lorem, vel efficitur risus mollis eget. Quisque molestie sapien quis enim ultrices mollis nec eu lacus.

View File

@ -0,0 +1 @@
Fusce at ornare sapien. Curabitur vestibulum nibh in neque tincidunt, non interdum ante semper. Vivamus eget scelerisque eros. Vestibulum egestas elementum congue. Ut hendrerit ultrices nunc, quis elementum arcu. Fusce ullamcorper quam accumsan, commodo augue ac, viverra ipsum. Pellentesque venenatis vehicula felis id placerat. Praesent mollis lobortis lorem, vel efficitur risus mollis eget. Quisque molestie sapien quis enim ultrices mollis nec eu lacus.

View File

@ -0,0 +1 @@
Curabitur eget bibendum dolor. Praesent eu metus ac neque convallis pharetra. Phasellus in enim lobortis, volutpat orci sit amet, scelerisque tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Naac-11022 Proin ultricies in nulla et facilisis. Pellentesque justo ipsum, pellentesque sed convallis et, feugiat quis nulla. Aliquam maximus elementum nisl non rutrum. Suspendisse id malesuada ante. Phasellus commodo ex quis orci iaculis finibus.

View File

@ -0,0 +1 @@
Etiam porttitor ligula fermentum mauris laoreet, a ultrices nibh scelerisque. Quisque erat mauris, rutrum quis pretium vitae, sollicitudin nec nisl. Etiam pretium est a commodo elementum. In lectus elit, semper eget aliquet nec, eleifend ut velit. Phasellus feugiat neque malesuada purus congue, in tincidunt dolor finibus. Proin eu bibendum velit. Aliquam tincidunt euismod justo, vel elementum tellus semper eu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean iaculis metus mauris, ut porttitor dolor volutpat a. Proin porttitor enim at tincidunt sollicitudin. Maecenas auctor pretium tempus. Nunc sit amet mi nunc.

View File

@ -0,0 +1 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent in tellus porta, vehicula nisl vel, ultrices orci. Mauris egestas, lectus eget consectetur dictum, dui lectus suscipit nulla, vitae tristique Nerp-66532 elit orci dignissim elit. Sed fermentum elementum odio, sit amet rhoncus nibh pellentesque eu. Proin sit amet porttitor lorem. Cras urna orci, molestie a semper quis, commodo non augue. Vestibulum blandit pellentesque lectus, sit amet dignissim orci finibus quis. In sem metus, pellentesque eget ultrices ac, tempor eleifend ligula.

View File

@ -0,0 +1,109 @@
"""
Programa día 9 - Buscador de números de serie
- Recorrer todos los archivos
y subcarpetas de directorio raiz Mi_Gran_Directorio. método walk() de os.
- Buscar string qye coincida con un patrón de número de serie
- Como mucho un número de serie por fichero.
módulo os para abrir e iterear por el directorio
expresiones regulares para encontrar el formato de número de serie correcto.
Formato:
[N] + [tres carateres de texto] + [-] + [5 números]
Ejemplo: Nryu-12365
Presentación de resultados:
----------------------------------------------------
Fecha de búsqueda: [fecha de hoy - formato dd/mm/aa]
ARCHIVO NRO. SERIE
------- ----------
texto1.txt Nter-15496
texto25.txt Ngba-85235
Números encontrados: 2
Duración de la búsqueda: 1 segundos
----------------------------------------------------
- La 'Duración de búsqueda' debe estar redondeada hacia arriba
"""
from datetime import date
import os
from pathlib import Path
import re
import time
import math
def fecha_hoy():
"""
Devuelve la fecha actual
"""
hoy = date.today().strftime('%d/%m/%Y')
fecha = f'\nFecha de búsqueda: {hoy}'
return fecha
def abrir_fichero(file_path):
"""
Recoge un path de un fichero
y devuelve el contenido del fichero
"""
with open(file_path, encoding="utf-8") as file:
contenido = file.read()
return contenido
def busqueda_serie():
"""
Buscador
"""
patron = r'N\D{3}-\d{5}'
ruta = './Mi_Gran_Directorio'
lista_filas = []
for root, sub, fichero in os.walk(ruta):
if fichero:
for arch in fichero:
sub.clear()
texto = abrir_fichero(Path(root, arch))
busqueda = re.findall(patron, texto)
if re.findall(patron, texto):
fila = f'{arch}\t| {busqueda[0]}\t| {root}'
lista_filas.append(fila)
lista_filas.sort()
return lista_filas
def tiempo_ejecucion():
"""
Ejecuta la búsqueda y devuelve
- La busqueda
- El contador
- El tiempo de ejecución
"""
inicio = time.time()
busqueda_serie()
final = time.time()
tiempo_total = math.ceil(final - inicio)
return tiempo_total
print(f'\n{fecha_hoy()}')
print("""
NOMBRE ARCHIVO\t| NRO. SERIE\t| UBICACIÓN DEL FICHERO
--------------\t| ----------\t| ---------------------""")
for f in busqueda_serie():
print(f)
print(f'\nNúmeros encontrados: {len(busqueda_serie())}')
print(f'Duración de la búsqueda: {tiempo_ejecucion()} seg.\n')

BIN
dia_09/Proyecto+Dia+9.zip Normal file

Binary file not shown.

View File

View File

View File

View File

9
dia_09/mi_texto_A.txt Normal file
View File

@ -0,0 +1,9 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla accumsan feugiat elit, sit amet consequat elit efficitur congue. Maecenas et turpis turpis. Pellentesque viverra nulla orci, non ornare neque dapibus ultricies. Pellentesque molestie semper augue, a tristique risus pulvinar eget. Nunc vulputate eget magna eu accumsan. Vestibulum ante dolor, varius vel lorem non, cursus dapibus lectus. Morbi et metus sollicitudin, tincidunt neque sed, faucibus augue. Sed felis diam, ullamcorper ac consequat eu, dictum nec purus. Phasellus ultricies nisi arcu, id consequat lorem suscipit at. Nulla facilisi.
Proin ultrices maximus ipsum eu ultricies. Cras consequat elit in lorem posuere euismod. Etiam nec enim ac urna aliquam facilisis ut in elit. Mauris sagittis libero justo, sed tempus lacus bibendum eu. Sed sit amet posuere sapien, vel iaculis nulla. Morbi bibendum turpis sed turpis fringilla, sit amet aliquet libero cursus. Nam consequat odio aliquet, scelerisque enim a, fringilla ligula. Donec varius lacus ut arcu finibus, id consectetur sapien consequat. Aliquam quam libero, iaculis vel justo a, facilisis porttitor velit. Vivamus sit amet scelerisque ipsum. Donec lobortis, leo nec eleifend viverra, mi erat tristique ligula, et tristique urna ipsum id arcu. Aenean sem ipsum, aliquet eget odio vitae, pellentesque blandit massa. Maecenas odio nibh, tempus sed aliquam non, laoreet quis diam. Ut ac aliquam massa, sit amet tristique tortor. Morbi ornare elit nec tellus convallis, sit amet tempus diam volutpat. Aliquam ac molestie dolor, eget sollicitudin neque.
Nullam fermentum, ipsum sed consectetur dapibus, ligula nisl pretium turpis, at condimentum magna elit vitae tellus. Nullam semper ipsum a porta lacinia. Mauris ex tortor, auctor eget nunc at, imperdiet scelerisque est. In hendrerit odio vitae sem ullamcorper consectetur. Praesent quis ornare tortor. Vestibulum accumsan metus erat, sed bibendum enim cursus quis. Praesent libero dui, sagittis quis urna a, sollicitudin viverra ante. Sed congue auctor mi eu ultrices. Curabitur quis finibus eros, sit amet molestie ante. Proin in diam aliquam, porta ante eu, cursus tellus. Sed sodales sem justo, at convallis odio facilisis a. Nam accumsan nisi et finibus vehicula. Nullam pharetra dolor eu nibh congue, non condimentum arcu imperdiet. Nam efficitur dapibus sem et dictum. Praesent euismod erat at convallis ullamcorper. Curabitur ut sem eleifend nunc porta porta.
Pellentesque malesuada risus eu pharetra tincidunt. Integer at lectus laoreet, venenatis urna ac, porttitor felis. Mauris volutpat pulvinar nulla, a dapibus erat venenatis eu. Sed diam nisi, accumsan et augue id, consequat facilisis elit. Nunc in turpis ut diam aliquet bibendum nec vel velit. Nam vel leo vitae ante fringilla faucibus. Proin condimentum eleifend magna, eleifend consectetur mauris ullamcorper a. Fusce interdum neque id purus volutpat rhoncus. Etiam consequat vehicula faucibus. Etiam vel sollicitudin felis, quis iaculis enim. Aenean ullamcorper a erat vel elementum. Donec eu mattis tortor. Mauris suscipit consequat dui non molestie.
Integer viverra auctor nunc, et laoreet lacus. Fusce mattis convallis nisl, eu tincidunt lectus iaculis id. Mauris erat metus, pretium ac suscipit id, iaculis id lacus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas finibus varius mauris, vitae dictum leo viverra quis. Etiam vel massa in lorem tempor rhoncus non ornare magna. Donec eleifend vestibulum nisl sed lobortis. Suspendisse in orci hendrerit, pulvinar nibh at, lacinia nulla. Nullam posuere pharetra nibh. Aliquam metus ipsum, suscipit a sem vitae, gravida vehicula orci. Cras fermentum sapien vitae dapibus feugiat. Morbi eget arcu et nulla pharetra sagittis vitae vel risus. Nulla facilisi. Vestibulum at mi eget dolor luctus iaculis.

9
dia_09/mi_texto_B.txt Normal file
View File

@ -0,0 +1,9 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla accumsan feugiat elit, sit amet consequat elit efficitur congue. Maecenas et turpis turpis. Pellentesque viverra nulla orci, non ornare neque dapibus ultricies. Pellentesque molestie semper augue, a tristique risus pulvinar eget. Nunc vulputate eget magna eu accumsan. Vestibulum ante dolor, varius vel lorem non, cursus dapibus lectus. Morbi et metus sollicitudin, tincidunt neque sed, faucibus augue. Sed felis diam, ullamcorper ac consequat eu, dictum nec purus. Phasellus ultricies nisi arcu, id consequat lorem suscipit at. Nulla facilisi.
Proin ultrices maximus ipsum eu ultricies. Cras consequat elit in lorem posuere euismod. Etiam nec enim ac urna aliquam facilisis ut in elit. Mauris sagittis libero justo, sed tempus lacus bibendum eu. Sed sit amet posuere sapien, vel iaculis nulla. Morbi bibendum turpis sed turpis fringilla, sit amet aliquet libero cursus. Nam consequat odio aliquet, scelerisque enim a, fringilla ligula. Donec varius lacus ut arcu finibus, id consectetur sapien consequat. Aliquam quam libero, iaculis vel justo a, facilisis porttitor velit. Vivamus sit amet scelerisque ipsum. Donec lobortis, leo nec eleifend viverra, mi erat tristique ligula, et tristique urna ipsum id arcu. Aenean sem ipsum, aliquet eget odio vitae, pellentesque blandit massa. Maecenas odio nibh, tempus sed aliquam non, laoreet quis diam. Ut ac aliquam massa, sit amet tristique tortor. Morbi ornare elit nec tellus convallis, sit amet tempus diam volutpat. Aliquam ac molestie dolor, eget sollicitudin neque.
Nullam fermentum, ipsum sed consectetur dapibus, ligula nisl pretium turpis, at condimentum magna elit vitae tellus. Nullam semper ipsum a porta lacinia. Mauris ex tortor, auctor eget nunc at, imperdiet scelerisque est. In hendrerit odio vitae sem ullamcorper consectetur. Praesent quis ornare tortor. Vestibulum accumsan metus erat, sed bibendum enim cursus quis. Praesent libero dui, sagittis quis urna a, sollicitudin viverra ante. Sed congue auctor mi eu ultrices. Curabitur quis finibus eros, sit amet molestie ante. Proin in diam aliquam, porta ante eu, cursus tellus. Sed sodales sem justo, at convallis odio facilisis a. Nam accumsan nisi et finibus vehicula. Nullam pharetra dolor eu nibh congue, non condimentum arcu imperdiet. Nam efficitur dapibus sem et dictum. Praesent euismod erat at convallis ullamcorper. Curabitur ut sem eleifend nunc porta porta.
Pellentesque malesuada risus eu pharetra tincidunt. Integer at lectus laoreet, venenatis urna ac, porttitor felis. Mauris volutpat pulvinar nulla, a dapibus erat venenatis eu. Sed diam nisi, accumsan et augue id, consequat facilisis elit. Nunc in turpis ut diam aliquet bibendum nec vel velit. Nam vel leo vitae ante fringilla faucibus. Proin condimentum eleifend magna, eleifend consectetur mauris ullamcorper a. Fusce interdum neque id purus volutpat rhoncus. Etiam consequat vehicula faucibus. Etiam vel sollicitudin felis, quis iaculis enim. Aenean ullamcorper a erat vel elementum. Donec eu mattis tortor. Mauris suscipit consequat dui non molestie.
Integer viverra auctor nunc, et laoreet lacus. Fusce mattis convallis nisl, eu tincidunt lectus iaculis id. Mauris erat metus, pretium ac suscipit id, iaculis id lacus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas finibus varius mauris, vitae dictum leo viverra quis. Etiam vel massa in lorem tempor rhoncus non ornare magna. Donec eleifend vestibulum nisl sed lobortis. Suspendisse in orci hendrerit, pulvinar nibh at, lacinia nulla. Nullam posuere pharetra nibh. Aliquam metus ipsum, suscipit a sem vitae, gravida vehicula orci. Cras fermentum sapien vitae dapibus feugiat. Morbi eget arcu et nulla pharetra sagittis vitae vel risus. Nulla facilisi. Vestibulum at mi eget dolor luctus iaculis.

BIN
dia_09/todo_comprimido.zip Normal file

Binary file not shown.