Python Sistema de Archivos

En esta ocasión vamos a ver algunas operaciones interesantes y muy comunes que usualmente requerimos al programar una aplicación que trabaje con el sistema de archivos, por ejemplo: determinar la existencia de un archivo o carpeta, obtener el tamaño de un fichero, crear, eliminar o renombrar archivos, etc.

Para comenzar veamos las distintas tareas disponibles en el módulo os.path.

Verificar si existe el archivo

Para determinar si el archivo indicado existe usaremos os.path.exists('filename') este retorna un booleano que indica si existe o no el archivo.

También es posible comprobar si se trata de una carpeta o un archivo, para ello usamos los correspondientes métodos: os.path.isdir('path') y os.path.isfile('path').

import os

os.path.exists('libs/_tkinter.libs')
os.path.isfile('libs/_tkinter.lib')
os.path.isdir('libs')

Estos tres métodos devuelven un booleano como resultado.

Obtener tamaño y fecha de modificación de archivo

Esta es otra tarea que comúnmente realizamos para ello seguimos usando el módulo os.path, esta vez para acceder a los metadatos de los archivos.

El método os.path.getsize('filename') devuelve el tamaño en bytes del archivo indicado, mientras de os.path.getmtime('filename') devuelve la fecha de modificación del archivo.

import os
import time

filesize = os.path.getsize('c:/developer/python36/python36.dll')
filetime = os.path.getmtime('c:/developer/python36/python36.dll')

print('Fecha de modificado:', time.ctime(filetime))
print('Tamano en bytes:    ', filesize)
print('Tamano en Kilobytes:', filesize / 1024)
print('Tamano en Megabytes:', (filesize / 1024) / 1024)

Usamos time.ctime(filetime) para imprimir una versión mas legible de la fecha de modificación del archivo.

Enumerar el contenido de una carpeta

Cuando quieres ver el contenido de una carpeta utilizaremos os.listdir('carpeta') donde carpeta es la ruta del directorio que queremos explorar, este método devuelve una lista con los nombres de cada uno de los archivos contenidos en la carpeta indicada.

import os.path

carpeta = 'c:/developer'

archivos = [name for name in os.listdir(carpeta)
           if os.path.isfile(os.path.join(carpeta, name))]

directorios = [name for name in os.listdir(carpeta)
              if os.path.isdir(os.path.join(carpeta, name))]

print(carpeta, 'contiene los siguientes archivos:\n', archivos, '\n')
print(carpeta, 'contiene las siguientes carpetas:\n', directorios)

Usando lo aprendido anteriormente vamos a separar nuestra lista de ficheros en dos, por una lado las carpetas y por otro los archivos, simplemente filtramos la lista comprobando si se trata de un archivo o carpeta.

Crear, eliminar y renombrar carpetas

Para crear una carpeta podemos utilizar el siguiente código: os.mkdir('c:/dev/dir') si lo que deseamos es eliminarla tenemos: os.rmdir('c:/dev/dir') este método nos permite borrar una carpeta pero no un archivo, para esta última operación debemos utilizar: os.remove('c:/dev/texto.txt') cuando lo que deseamos hacer es renombrar una carpeta o un archivo: os.rename('c:/dev/texto.txt', 'c:/dev/doc.txt')

Comentarios

Entradas populares de este blog

Conectar SQL Server con Java

Entrenar OpenCV en Detección de Objetos

Detección de figuras geométricas

Procesamiento de imágenes en OpenCV

Conociendo la clase cv::Mat de OpenCV