En esta nueva serie de tutoriales les enseñaremos a como automatizar tareas usando el lenguaje de programacion Python, que les puede ser util al momento de realizar actividades como crear documentos, u ordenarlos, escribiendo programas con pocas lineas de codigo en Python que pueden hacer esto de manera automática. Empezaremos conociendo como interacturar con los archivos y carpetas del sistema operativo usando el modulo os.
Las variables son una buena opción para almacenar datos mientras se ejecuta un programa, dando una sencillez alta y veloz. Pero puede existir momentos en los que es necesario almacenar información de un tipo de manera persistente y sin tener que recurrir a base de datos u otros tipos de almacenamiento de información.
Para este caso podemos crear archivos para almacenar datos, y en Python podemos hacerlo de una manera rápida y como es común, con pocas lineas de código.
Nota
En estos ejemplos los directorios se usan como en el entorno de windows y linux, revisa y adaptalos a tu sistema operativo.
Archivos y directorios
Un archivo tiene 2 propiedades principales: un nombre de archivo y un directorio. El directorio especifica la ubicación del archivo en la computadora, por ejemplo, si la computadora esta en una computadora con sistema operativo windows, y el nombre del archivo es programa.exe, la ruta o directorio del archivo seria C:\users\usuario\documentos.
Continuando, las carpetas en un directorio, pueden contener archivos u otras carpetas, como ejemplo la siguiente imagen:
En windows, para separar las rutas o directorios se usan los backslashes (\) como separador entre los nombres de carpetas. En OS X y linux ocupamos el forward slash (/) para separar.
El modulo os
En python contamos con el modulo os, el cual nos ofrece todas las herramientas para interactuar con el sistema operativo, como: crear carpetas, crear o abrir archivos, listas carpetas, etc. Este modulo ya viene incluido en el lenguaje Python, así que no es necesario instalarlo.
En todos los ejemplos se utiliza el modulo os, por lo tanto siempre debe estar importado, esto se realiza de la siguiente manera:
import os
Obtener el directorio actual
Aveces es necesario obtener el directorio en el que nos encontremos, esto podría ser para un caso, por ejemplo, en el que tengamos que consumir archivos como imágenes.
Para obtener el directorio actual utilizamos el modulo os.
import os
os.getcwd()
‘C:\\Python34’
Cambiar de directorios
Para cambiar de directorio en python usando el modulo os, usamos el método “chdir” al cual le pasamos la ruta a la que queremos cambiarnos.
os.chdir('C:\\Windows\\System32')
os.getcwd()
‘C:\\Windows\\System32’
Rutas absolutas y rutas relativas
Una ruta absoluta es aquella que proviene de la carpeta raíz.
Una ruta relativa es aquella que se origina desde la carpeta donde se ejecuta el programa, es decir la ruta actua.
Crear carpetas
Con el modulo os es posible la creación de carpetas, esto con el meto “makedirs()”, por ejemplo:
import os
os.makedirs('C:\\delicious\\walnut\\waffles')
Nombre base y directorio
En casos específicos es necesario dividir una ruta de archivo, en la ruta y el nombre del archivo, podemos realizarlo usando los métodos “basename” y “dirname”
path = 'C:\\Windows\\System32\\calc.exe'
os.path.basename(path)
‘calc.exe’
os.path.dirname(path)
‘C:\\Windows\\System32’
Si necesita dividir la ruta en sus carpetas y archivo, realiza lo siguiente:
calcFilePath = 'C:\\Windows\\System32\\calc.exe'
os.path.split(calcFilePath)
(‘C:\\Windows\\System32’, ‘calc.exe’)
Eliminar carpetas
Para eliminar una carpeta se realiza de una forma similar:
os.rmdir("Musica/favoritos/actual"))
Tamaño de archivos y carpetas
Usando el modulo os es posible obtener el peso o tamaño de las carpetas o archivos en general, se realiza llamando al método “os.path.getsize”, de este modo:
os.path.getsize('C:\\Windows\\System32\\calc.exe')
776192
Saber si una ruta es valida o no
Saber si una ruta es correcta o no, puede ahorrarnos muchos dolores de cabeza, por ejemplo si le pedimos al usuario que suba un documento, es necesario verificar si la ruta que nos da del documento existe o no. Usando el módulo os podemos realizarlo de la siguiente manera:
os.path.exists('C:\\Windows')
os.path.exists('C:\\some_made_up_folder')
os.path.isdir('C:\\Windows\\System32')
os.path.isfile('C:\\Windows\\System32')
os.path.isdir('C:\\Windows\\System32\\calc.exe')
os.path.isfile('C:\\Windows\\System32\\calc.exe')
- True
- False
- True
- False
- False
- True
Abrir archivos
Para abrir un archivo en python se usa la función “open”, donde se le pasa como texto la ruta indicada para el archivo a abrir, esta puede ser una ruta absoluta o relativa. La función open retorna un objeto de tipo File.
Para practicar, crea en tu computadora un archivo llamado “datos.txt” he introduce datos de texto en el, ejecuta el siguiente código para abrirlo desde python:
file= open('C:\\Users\\carpetas\\datos.txt')
si usas linux o mac os, es:
file= open('C:/Users/carpetas/datos.txt')
Recuerda reemplazar la ruta en el ejemplo con la ruta correcta de su sistema.
Leer contenido de archivos
Para leer el contenido de los archivos que previamente hemos leído, usamos el método “read”, se realiza de la siguiente manera:
datos = file.read()
print(datos)
Al ejecutar este ejemplo leeremos la información del archivo he imprimiremos su contenido en pantalla.
SI el archivo contiene texto que se encuentra en muchas lineas, podemos leerlos usando “readlines”:
sonnetFile = open('sonnet29.txt')
sonnetFile.readlines()
Escribiendo archivos
Escribir archivos es de una manera similar, primero pasamos una ruta de archivo a la función open, si el archivo que queremos escribir no existe, automaticamente se creara para escribir información en el, es importante recalcar que se le pasara un valor mas a la función open, en este caso es el premiso para escribir información. El ejemplo es el siguiente:
baconFile = open('bacon.txt', 'w')
baconFile.write('Hello world!\n')
baconFile.close()
baconFile = open('bacon.txt', 'a')
baconFile.write('Bacon is not a vegetable.')
baconFile.close()
baconFile = open('bacon.txt')
content = baconFile.read()
baconFile.close()
print(content)
Otras funciones del modulo os, son las siguientes:
Descripción | Método |
---|---|
Saber si se puede acceder a un archivo o directorio | os.access(path, modo_de_acceso) |
Conocer el directorio actual | os.getcwd() |
Cambiar de directorio de trabajo | os.chdir(nuevo_path) |
Cambiar al directorio de trabajo raíz | os.chroot() |
Cambiar los permisos de un archivo o directorio | os.chmod(path, permisos) |
Cambiar el propietario de un archivo o directorio | os.chown(path, permisos) |
Crear un directorio | os.mkdir(path[, modo]) |
Crear directorios recursivamente | os.mkdirs(path[, modo]) |
Eliminar un archivo | os.remove(path) |
Eliminar un directorio | os.rmdir(path) |
Eliminar directorios recursivamente | os.removedirs(path) |
Renombrar un archivo | os.rename(actual, nuevo) |
Crear un enlace simbólico | os.symlink(path, nombre_destino) |