Sistema de Archivos con Python
Python en su librería estándar provee varias funciones para trabajar con el sistema de archivos, estas pueden ser: mover, copiar, pegar, listar, renombrar, eliminar, etc. Por lo tanto, en este artículo estaremos interactuando el sistema de archivos de Windows con Python a través de los módulos OS y Shutil.
Si desea informase sobre el sistema de archivos de Linux para ponerlo en práctica con estos módulos, puede leer la siguiente página de la academia.
Table of Contents
ToggleMódulo OS
Dentro de este módulo estaremos viendo:
os.listdir()
os.getcwd()
os.mkdir()
os.path.exists()
os.rename()
os.remove()
os.rmdir()
os.system()
os.name
Listar archivos
La función os.listdir() retorna una lista con los archivos y carpetas en una ruta en particular que se pasa como argumento. Veamos el siguiente ejemplo:
Dato importante a tener en cuenta:
Cuando indicamos una ruta, por ejemplo “C:\ruta\carpeta\archivo.txt”, en Windows tenemos dos opciones:
1- Podemos usar el slash, o barra invertida “\”. Sin embargo, ya que esta barra invertida se emplea para generar algunos caracteres especiales, como el de salto en línea (\n), cuando queramos utilizarla como separador en una ruta deberemos usar doble barra invertida “\\”.
2- La otra forma, y mas sencilla, es colocar la barra simple, o común, “/” una sola vez como hemos mostrado en el ejemplo anterior.
Ahora bien, si omitimos el argumento, se toma por defecto la ruta desde donde se esté ejecutando el programa. El nombre de esta ruta es current working directory (directorio de trabajo actual) y es retornada por la función os.getcwd(). Por ejemplo:
import os
os.getcwd()
Out:
‘C:\Users\Usuario\Desktop’
De modo que las siguientes dos llamadas son equivalentes:
os.listdir(os.getcwd())
os.listdir()
Verificar con True/False
La función os.path.exists() toma como argumento una ruta (sea un directorio o un archivo) y retorna un booleano indicando si la misma existe (True) o no (False).
Crear Carpetas
Con os.mkdir() (make directory) tomamos como argumento la ruta hacia una carpeta y la creamos. Por ejemplo:
os.mkdir(«C:/Users/user/Desktop/new_directory
Eliminar carpetas vacías
Por otro lado, tenemos a os.rmdir() (remove directory) que elimina una carpeta, únicamente carpetas vacías. Más adelante veremos la función shutil.rmtree() para eliminar carpetas con contenido dentro.
os.rmdir(«C:/ruta/directorio»)
Eliminar archivos
Para remover archivos se utiliza os.remove().
os.remove(«C:/ruta/archivo.txt»)
Cambiar nombre de archivo
La función os.rename() toma como primer argumento la ruta a un archivo cuyo nombre será cambiado por el segundo argumento.
os.rename(«C:/ruta/archivo.txt»,»C:/ruta/nuevo_nombre.txt»)
Ejecutar comandos
Si deseamos ejecutar alguna instrucción o comando del sistema operativo podemos usar os.system()
os.system(«cls»)
El comando cls se utiliza en Windows para borrar el contenido mostrado en pantalla. En linux utilizamos clear.
Conocer el SO
Finalmente os, también nos provee una manera de saber sobre que sistema operativo estamos ejecutando nuestro código.
os.name
Esto devolverá “nt” en caso de ser Windows y, en caso de ser Linux o ios, devolverá “posix”
Módulo SHUTIL
Este módulo, no es muy distinto a os. No obstante, también es muy utilizado para la manipulación de archivos.
Dentro de este módulo veremos las siguientes funciones:
shutil.copy()
shutil.move()
shutil.rmtree()
Algunos ejemplos
Con shutil.copy() copiamos un archivo de una ubicación a otra, manteniendo el original.
import shutil
shutil.copy(«C:/ruta/directorio/archivo.txt», «C:/otra_ruta/otro-directorio/archivo.txt»)
De la misma forma opera shutil.move(), cuya función es mover un archivo de una ubicación a otra, quitándola de su ruta original.
shutil.move(«C:/ruta/direcotrio/archivo.txt»,«C:/otra-ruta/otro-directorio/archivo.txt»)
Finalmente, para eliminar una carpeta que no esté vacía empleamos shutil.rmtree():
shutil.rmtree(«C:\\ruta\\carpeta_no_vacia»)
Recordar
Siempre que trabajemos con estos módulos, debemos hacerlo en un entorno de prueba, por ejemplo una máquina virtual o archivos creados a modo de práctica, y NO con archivos del sistema. Ya que una vez borrados no terminan en la papelera, Son eliminados definitivamente!