¿Cómo utilizar la librería OS en Python para trabajar con archivos y directorios?
Interactuar con el sistema operativo desde Python es una tarea que se hace mucho más sencilla gracias a la librería OS. Sin necesidad de instalaciones adicionales, esta herramienta permite automatizar y manejar archivos y directorios, lo que simplifica enormemente el flujo de trabajo. Veamos algunos ejemplos prácticos de su uso.
¿Cómo obtener el directorio de trabajo actual?
La librería OS nos facilita la tarea de conocer en qué carpeta estamos trabajando. Esto es especialmente útil cuando deseamos manipular archivos en nuestro directorio actual sin tener que especificar rutas absolutas.
import os
# Obtener el directorio de trabajo actual
cwd = os.getcwd()print("Directorio de trabajo actual:", cwd)
Cuando ejecutas este código, Python te indicará el directorio corriente en el que te encuentras, ayudándote a tener un mejor control sobre tu ubicación en el sistema de archivos.
¿Cómo listar archivos de cierto tipo?
Muchas veces, necesitamos desplegar una lista de archivos de un tipo específico, como los archivos de texto.
# Lista los archivos que terminan en .txt en el directorio actual
txt_files =[f for f in os.listdir('.')if f.endswith('.txt')]print("Archivos txt:", txt_files)
En este snippet, usamos list comprehension para filtrar y obtener solo los archivos que terminan con .txt, facilitando así su manipulación posterior.
¿Cómo renombrar un archivo?
Renombrar archivos es otra funcionalidad que podemos implementar fácilmente con OS. Supongamos que queremos cambiar el nombre del archivo caperucita.txt a cuento.txt.
# Renombrar un archivo de caperucita.txt a cuento.txtos.rename('caperucita.txt','cuento.txt')print("Archivo renombrado")
Así podrás modificar nombres de archivos de manera simple y rápida, ayudando a mantener tus directorios organizados.
¿Cómo realizar cálculos matemáticos precisos con Math?
Cuando trabajamos con cálculos matemáticos en Python, la librería Math es una aliada invaluable. Ofrece una serie de funciones y constantes matemáticas, ideal para conseguir resultados precisos, como en el caso del número pi.
¿Cuál es la importancia de la constante pi?
Pi es una constante con decimales infinitos, y usarla con precisión es esencial para cálculos científicos o de ingeniería. La librería Math nos provee de pi con todos sus decimales disponibles.
import math
# Calcular el área y perímetro de un círculo
radio =5area = math.pi*(radio **2)perimetro =2* math.pi* radio
print("Área:", area)print("Perímetro:", perimetro)
Gracias a Math, obtenemos resultados matemáticamente precisos, que pueden ser fundamentales en diferentes aplicaciones científicas.
¿Cómo se pueden generar números y selecciones aleatorias con Random?
La generación de números y elecciones aleatorias es una tarea comúnmente requerida, y la librería Random en Python nos ofrece varias herramientas útiles para este propósito.
¿Cómo generar un número entero aleatorio?
Para generar números al azar dentro de un rango específico, randint es extremadamente práctica.
import random
# Generar un número entero aleatorio entre 1 y 10random_number = random.randint(1,10)print("Número aleatorio:", random_number)
Esta función es solo la primera entre muchas posibles aproximaciones para incluir aleatoriedad en nuestros programas.
¿Cómo elegir un elemento aleatorio de una lista?
Podemos usar Random para hacer selecciones aleatorias de listas predefinidas. Supongamos que queremos elegir un color al azar.
# Elegir un color aleatorio de la lista
colores =["rojo","azul","verde"]color_random = random.choice(colores)print("Color elegido aleatoriamente:", color_random)
Aquí, usamos choice para realizar selecciones impredecibles, lo cual es ideal para situaciones que requieren diversidad o variación en los resultados.
¿Cómo desordenar una lista?
Si deseamos barajar o mezclar elementos de una lista, shuffle es el método indicado.
# Barajar una lista de cartas
cartas =["as","rey","reina","jota","10"]random.shuffle(cartas)print("Cartas barajadas:", cartas)
Esta función reordena los elementos de la lista, dejando abierta un sinfín de aplicaciones posibles, desde juegos de cartas hasta simulaciones.
Cada librería de la biblioteca estándar de Python ofrece una amplia gama de posibilidades para el aprendizaje y la automatización de tareas cotidianas. Continúa explorando la documentación y descubre más funcionalidades que enriquecerán tus aplicaciones.
Chicos para facilitarles si quieren buscar aquí dejo una lista interesante que con ayudar de ChatGpt me pareció interesante:
1. Métodos de cadenas (strings):
str.upper(): Convierte una cadena a mayúsculas.
str.lower(): Convierte una cadena a minúsculas.
str.capitalize(): Convierte el primer carácter a mayúscula y el resto a minúsculas.
str.split(sep=None): Divide una cadena en una lista, usando el separador sep.
str.join(iterable): Une una lista o iterable en una sola cadena, usando el string como separador.
str.strip(): Elimina espacios en blanco (u otros caracteres) al inicio y final de la cadena.
str.replace(old, new): Reemplaza todas las ocurrencias de una subcadena old por new.
str.find(sub): Busca la subcadena sub y devuelve la posición de su primera aparición, o -1 si no la encuentra.
2. Métodos de listas:
list.append(item): Agrega un elemento al final de la lista.
list.extend(iterable): Agrega todos los elementos de un iterable al final de la lista.
list.insert(index, item): Inserta un elemento en una posición específica.
list.remove(item): Elimina la primera aparición de un elemento en la lista.
list.pop(index=-1): Elimina y devuelve el elemento en la posición index (el último por defecto).
list.index(item): Devuelve el índice de la primera aparición de un elemento.
list.sort(): Ordena la lista en orden ascendente.
list.reverse(): Invierte el orden de los elementos en la lista.
3. Métodos de diccionarios:
dict.get(key, default=None): Devuelve el valor asociado a la clave key, o default si la clave no existe.
dict.keys(): Devuelve una vista de todas las claves del diccionario.
dict.values(): Devuelve una vista de todos los valores del diccionario.
dict.items(): Devuelve una vista de todos los pares clave-valor del diccionario.
dict.update(other_dict): Actualiza el diccionario con los pares clave-valor de otro diccionario.
dict.pop(key, default=None): Elimina y devuelve el valor asociado a la clave key.
4. Métodos de conjuntos (sets):
set.add(item): Agrega un elemento al conjunto.
set.remove(item): Elimina un elemento del conjunto. Lanza un error si el elemento no está presente.
set.discard(item): Elimina un elemento sin lanzar un error si no está presente.
set.union(other_set): Devuelve un nuevo conjunto con los elementos de ambos conjuntos.
set.intersection(other_set): Devuelve un conjunto con los elementos comunes entre ambos conjuntos.
set.difference(other_set): Devuelve un conjunto con los elementos presentes en el conjunto original pero no en other_set.
5. Métodos de archivos:
open(filename, mode): Abre un archivo y lo devuelve como un objeto de archivo.
file.read(): Lee todo el contenido del archivo.
file.readline(): Lee una línea del archivo.
file.readlines(): Lee todas las líneas del archivo y las devuelve como una lista.
file.write(string): Escribe una cadena en el archivo.
file.writelines(lines): Escribe una lista de cadenas en el archivo.
file.close(): Cierra el archivo.
6. Métodos para manejo de errores:
try: Comienza un bloque de código que podría generar una excepción.
except: Se ejecuta si ocurre una excepción dentro del bloque try.
finally: Se ejecuta independientemente de si se produce una excepción o no.
raise: Lanza una excepción manualmente.
7. Funciones generales:
len(obj): Devuelve la longitud de un objeto (lista, cadena, etc.).
type(obj): Devuelve el tipo de un objeto.
isinstance(obj, class): Verifica si un objeto es una instancia de una clase.
sum(iterable): Devuelve la suma de los elementos de un iterable.
max(iterable): Devuelve el valor máximo de un iterable.
min(iterable): Devuelve el valor mínimo de un iterable.
range(start, stop, step): Genera una secuencia de números desde start hasta stop, con un incremento de step.
Good contribution claps!
Gracias por tu aporte
1. OS (Sistema Operativo):
os.getcwd() Retorna el directorio de trabajo actual.
os.chdir(path): Cambia el directorio de trabajo actual al especificado.
os.listdir(path): Lista los archivos y carpetas en el directorio especificado.
os.makedirs(path): Crea directorios de manera recursiva.
os.remove(path): Elimina el archivo especificado.
os.path.join(*paths): Une componentes de una ruta de manera segura según el sistema operativo.
os.path.exists(path): Verifica si una ruta existe.
os.rename(src, dst): Renombra un archivo o directorio.
os.environ: Proporciona acceso a las variables de entorno del sistema.
2. Módulo (Operaciones Matemáticas):
math.sqrt(x): Retorna la raíz cuadrada de x.
math.pow(x, y): Eleva x a la potencia y (equivalente a x ** y).
math.ceil(x): Redondea un número hacia arriba (al entero más cercano).
math.floor(x): Redondea un número hacia abajo (al entero más cercano).
math.factorial(x): Retorna el factorial de x.
math.fabs(x): Retorna el valor absoluto de x (como número flotante).
math.log(x[, base]): Retorna el logaritmo de x con base base (por defecto, base e).
math.sin(x), math.cos(x), math.tan(x): Retorna el seno, coseno y tangente de x (en radianes).
math.pi: Retorna el valor de π (pi).
3. Módulo (Generación Aleatoria):
random.random(): Retorna un número flotante aleatorio entre 0.0 y 1.0.
random.randint(a, b): Retorna un entero aleatorio entre a y b (ambos inclusive).
random.choice(seq): Retorna un elemento aleatorio de una secuencia (como una lista).
random.shuffle(seq): Baraja una secuencia (lista) en su lugar.
random.sample(population, k): Retorna una lista de tamaño k con elementos aleatorios sin repetición de la population.
random.uniform(a, b): Retorna un número flotante aleatorio entre a y b.
random.gauss(mu, sigma): Retorna un número siguiendo una distribución normal (gaussiana) con media mu y desviación estándar sigma.
Brutal tu aporte platzibro!
La librería random de Python no genera números completamente aleatorios, sino pseudoaleatorios 🎲. Esto significa que los números que produce provienen de un algoritmo que utiliza un valor inicial llamado semilla 🌱 . A partir de esta semilla, el algoritmo genera una secuencia de números que, aunque parecen aleatorios, en realidad siguen un patrón que es predecible si conoces la semilla 🔑
el archivo no puede llamarse math.py porque crea un conflicto y python intenta importar ese mismo archivo, hay que ponerle otro nombre, incluso ella lo dice en el video :)
Total me paso y tuve que corregirlo en clases anteriores
Carli explica muy bien, nada en contra de ella.
Pero la verdad, la ruta no nos explica el verdadero concepto o mas bien, entramos a tratar de entender el concepto sin entender muy bien el objetivo.
Entonces es como que a mi me den un Martillo, un Serrucho, unos clavos, una madera, un destornillador, unos tornillos, pero sino se como usarlos ni para que, seguramente no lo hago.
Entonces aqui nos explica como usarlo, pero no para que sirve o que podria resolver con tanta herramienta.
de eso se trata el curso de darte las herramientas , un lenguaje de programación es una herramienta a un problema, una vez ya sabes las herramientas buscas en que usarlas , NO puedes esperar que te enseñen de todo en un curso , ya de aquí miras como las puedes usar
GOOD LUCK 💚
Explore algunas de las librerias, les dejo el codigo que cree para probar cada una:
-Shutil: Lo usé para realizar una copia del archivo "cuento.txt"
import shutil
origen = "cuento.txt"
destino = "copia_de_cuento.txt"
shutil.copy(origen, destino)
print("Archivo copiado.")
-Pathlib: Lo usé para saber si un archivo existe:
from pathlib import Path
ruta = Path("cuento.txt")
if ruta.exists():
contenido = ruta.read_text()
print(f"Contenido del archivo:\n{contenido}")
else: print(f"El archivo {ruta} no existe.")
-Datetime: Lo usé para calcular la cantidad de dias entre dos fechas:
Seaborn – Visualizaciones estadísticas más atractivas.
Plotly – Gráficos interactivos.
Bokeh – Visualización web interactiva.
Altair – Visualización declarativa y concisa.
🤖 Machine Learning / IA
Scikit-learn – Algoritmos de ML clásicos (SVM, árboles, clustering, etc.).
TensorFlow – Deep learning a gran escala.
PyTorch – Aprendizaje profundo dinámico y flexible.
XGBoost / LightGBM – Modelos de boosting altamente optimizados.
Transformers (de HuggingFace) – NLP con modelos preentrenados.
🌐 Web y APIs
Flask – Microframework para APIs y sitios web.
FastAPI – Framework moderno para crear APIs rápidas (muy usado).
Django – Framework web completo y robusto.
Requests – Para hacer peticiones HTTP fácilmente.
BeautifulSoup / lxml / Scrapy – Web scraping.
🧪 Testing y QA
pytest – Testing poderoso y flexible.
unittest – Librería de pruebas estándar en Python.
tox – Automatización de pruebas en múltiples entornos.
🧰 Utilidades y Productividad
tqdm – Barras de progreso.
loguru – Logging simplificado.
click / argparse – Creación de interfaces por línea de comandos.
rich – Salida rica en la terminal (tablas, colores, trazas bonitas).
pydantic – Validación de datos con tipado (muy usado con FastAPI).
📦 Automatización y Scripting
os / shutil / pathlib – Manejo de archivos y sistema.
subprocess – Ejecutar comandos del sistema.
schedule – Planificar tareas automáticas.
pyautogui – Controlar teclado y ratón.
🔐 Ciberseguridad / Criptografía
cryptography – Funciones de cifrado modernas.
hashlib – Hashing (MD5, SHA, etc.).
Scapy – Análisis y manipulación de paquetes de red.
📚 Procesamiento de Lenguaje Natural (NLP)
nltk – Herramientas básicas de NLP.
spaCy – Procesamiento de texto rápido y moderno.
TextBlob – NLP simplificado.
Gensim – Modelado de tópicos y similitud semántica.
Muy buena clase, ya voy entendiendo mejor cada una de las herramientas.
cwd = os.getcwd()var =input("que tipo de archivo deseas buscar?")if'py'in var:# print(cwd) py_files =[t for t in os.listdir('.')if t.endswith('py')]print(py_files)elif'js'in var: json_files =[t for t in os.listdir('.')if t.endswith('.json')]print(json_files)else:print('no se encuentra en la base de datos')
Es cierto, si intentas renombrar o eliminar un archivo en una carpeta sincronizada con Google Drive, puedes enfrentar restricciones debido a la forma en que Drive maneja los archivos. Google Drive gestiona los archivos en la nube, y cualquier cambio que realices en tu sistema local se sincroniza con su plataforma. Si el archivo está en uso o no tienes permisos adecuados, no podrás realizar cambios. Asegúrate de tener los permisos correctos y que el archivo no esté bloqueado.
Con ayuda de ChatGPT pude extraer los que se utilizan con mas frecuencia:
1. Manejo de archivos:
- open(file, mode): Abre un archivo en el modo especificado (lectura, escritura, etc.).
- read(), readline(), readlines(): Lee el contenido de un archivo completo o línea por línea.
- write(string): Escribe texto en un archivo.
2. Manejo de cadenas:
- str.split(separator): Divide una cadena en una lista según un separador.
- str.join(iterable): Une elementos de un iterable en una sola cadena.
- str.strip(), str.lstrip(), str.rstrip(): Elimina espacios o caracteres de los extremos de una cadena.
- str.replace(old, new): Reemplaza partes de una cadena.
- str.upper(), str.lower(), str.capitalize(): Cambia el formato de las cadenas (mayúsculas, minúsculas, etc.).
3. Listas:
- list.append(element): Agrega un elemento al final de la lista.
- list.extend(iterable): Agrega múltiples elementos a la lista desde un iterable.
- list.sort(key=None, reverse=False): Ordena los elementos de la lista en su lugar.
- list.pop(index): Elimina y devuelve el elemento en el índice especificado.
4. Diccionarios:
- dict.keys(), dict.values(), dict.items(): Obtiene las claves, valores o pares clave-valor.
- dict.get(key, default): Obtiene el valor de una clave, o un valor predeterminado si no existe.
- dict.update(other_dict): Actualiza el diccionario con pares clave-valor de otro diccionario.
5. Funciones matemáticas:
- abs(x): Devuelve el valor absoluto de un número.
- round(number, ndigits): Redondea un número a la cantidad especificada de decimales.
- min(iterable), max(iterable): Devuelve el valor mínimo o máximo de un iterable.
- sum(iterable): Suma todos los elementos de un iterable.
6. Colecciones:
- len(iterable): Devuelve el número de elementos en un iterable.
- enumerate(iterable, start=0): Devuelve un iterable con índices y valores.
- zip(*iterables): Combina múltiples iterables en tuplas.
7. Fechas y horas:
- datetime.now(): Obtiene la fecha y hora actuales.
- date.today(): Devuelve la fecha actual.
- strftime(format): Formatea objetos de fecha y hora en cadenas.
8. Módulos útiles:
- os: os.getcwd(): Devuelve el directorio actual. os.listdir(): Lista archivos en un directorio.
- sys: sys.argv: Obtiene los argumentos de línea de comandos.
- json: json.loads(): Convierte una cadena JSON en un diccionario. json.dumps(): Convierte un diccionario en una cadena JSON.
- re: re.search(pattern, string): Busca patrones en una cadena usando expresiones regulares.
- random: random.randint(a, b): Genera un número entero aleatorio entre a y b.
De eso se trata
Esa funcion de shuffle es una chulada!!!
Justo como el Spotify!
algunos métodos útiles pueden ser:
datetime, time, para manejo de fechas y horas,
String, para manejo de textos,
re, para expresiones regulares para búsqueda y manipulación de texto