Operaciones con directorios
Una de las utilidades del módulo os es el trabajo con directorios, así que dedicaré esta entrada a las funciones que nos permiten realizar estas operaciones.
Lo primero que vamos a hacer (1) es conocer en qué directorio estamos trabajando, esto es, en qué directorio se encuentra el archivo desde el que trabajamos. Para ello empleamos la función os.getcwd() que nos devuelve la ruta completa del directorio en que nos encontramos (2):
# Obtener el directorio de trabajo actual
directorio_actual = os.getcwd()
print(f"Estás en: {directorio_actual}")
Una vez que sabemos en qué directorio estamos situados, puede interesarnos acceder a otro diferente (3). Para ellos disponemos de la función os.chdir() a la que pasamos como parámetro el string del directorio al que deseamos acceder para, por ejemplo, crear en él un nuevo directorio; para ello empleamos la función os.mkdir(). Esto es lo que hace el siguiente script.
import os
# Obtenemos el directorio de trabajo inicial
directorio_inicial = os.getcwd()
print(f"Estás en: {directorio_inicial}")
# Cambiamos el directorio de trabajo y obtenemos su ruta
os.chdir('D:/ArchivosVarios')
directorio_actual = os.getcwd()
print(f"Y ahora estás en: {directorio_actual}")
# Y finalmente creamos un nuevo directorio en él
os.mkdir('nuevo_directorio')
También podemos eliminar un directorio, tanto si está vacío os.rmdir() como si no lo está, aunque para esto deberemos importar el módulo shutil, que debe ser usado con precaución (4).
# Módulo os. Elimina un directorio vacío
os.rmdir('nuevo_directorio')
# Módulo complementario para operaciones de archivos
import shutil
# ¡Cuidado! Elimina todo el contenido
shutil.rmtree('directorio_con_contenido')
Una vez que accedemos a un directorio nos puede interesar conocer qué subdirectorios y archivos contiene (listdir()), sólo qué archivos (isfile) o sólo qué directorios (isdir())...
#Ahora listamos los subdirectorios y archivos del directorio actual
lista_conten= os.listdir('.') # '.' representa el directorio actual
print(f"Contenido del directorio: {lista_conten}")
#Sólo mostramos los archivos
archivos = [f for f in lista_conten if os.path.isfile(f)]
print(f"Archivos: {archivos}")
#Sólo mostramos los subdirectorios
directorios = [d for d in lista_conten if os.path.isdir(d)]
print(f"Directorios: {directorios}")
... aunque es posible que deseemos hacer un listado con información más detallada
for elemento in lista_conten:
tipo = "Directorio" if os.path.isdir(elemento) else "Archivo"
tamaño = os.path.getsize(elemento) # Tamaño en bytes
print(f"{elemento} - {tipo} - {tamaño} bytes")
Notas:
1Realmente lo primero que haremos será importar el módulo os mediante la instrucción correspondiente
(import os), pero esto lo damos por sabido.
2La segunda instrucción es la que nos devuelve por pantalla esa ruta. En otras ocasiones puede interesarnos conocerla para trabajar con ella, de ahí el interés por asociarla a una variable.
3La función
getcwd() interesa para conocer desde donde se ejecuta nuestro script, pero necesitamos la función chdir() para navegar por el sistema de archivos.
4El módulo
shutil permite realizar operaciones de alto nivel con archivos y colecciones de archivos, incluyendo la copia y el borrado de archivos y directorios. Su uso debe ser cuidadoso, ya que podemos eliminar accidentalmente archivos que no deseamos borrar.
No hay comentarios:
Publicar un comentario
Comenta esta entrada