Lathack

Sistema de Archivos con Python

Sistemas 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.

Mó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:

Sistemas de Archivos con Python

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!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

18 + 6 =

Lathack
Scroll al inicio