3 usuarios conectados
Automatización y scripting. Automatización de tareas del sistema operativo
Automatización y scripting. Automatización de tareas del sistema operativo
Ahora vamos a explorar cómo Python puede ser una
herramienta poderosa para la automatización de tareas del sistema
operativo utilizando los módulos os
y subprocess
.
Estos módulos permiten interactuar con el sistema operativo directamente desde
tus scripts de Python, automatizando tareas que de otra manera tendrías que
realizar manualmente a través de la línea de comandos o la interfaz gráfica.
Módulo os
:
El módulo os
proporciona una forma de
usar funcionalidades dependientes del sistema operativo, como interactuar con el
sistema de archivos, ejecutar comandos, gestionar procesos y obtener información
del entorno.
Tareas Comunes con el Módulo os
:
Ejemplo Básico con el Módulo os
:
Módulo subprocess
:
El módulo subprocess
proporciona
una forma más potente y flexible de ejecutar y controlar procesos hijo. Permite
interactuar con los comandos del sistema, capturar su salida, enviarles entrada
y gestionar sus códigos de retorno.
Funciones Clave del Módulo
subprocess
:
-
subprocess.run(args, *, stdin=None,
input=None, stdout=None, stderr=None, capture_output=False, shell=False,
cwd=None, env=None, check=False, timeout=None, **other_popen_kwargs)
:
La función recomendada para la mayoría de los casos de uso. Ejecuta un
comando y espera a que termine. Puede capturar la salida estándar y la
salida de error.
args
: Una lista de
argumentos del comando o una cadena si shell=True
.
capture_output=True
:
Captura la salida estándar y la salida de error.
check=True
: Lanza una
excepción CalledProcessError
si el comando retorna un
código de salida diferente de cero.
shell=True
: Ejecuta el
comando a través de la shell. Puede ser útil para comandos complejos con
redirecciones o pipes, pero conlleva riesgos de seguridad si la entrada
no es confiable.
-
subprocess.Popen(args, stdin=None,
stdout=None, stderr=None, shell=False, cwd=None, env=None)
:
Proporciona un control más granular sobre la ejecución del proceso hijo.
Retorna un objeto Popen
que se puede usar para interactuar con
el proceso (enviar entrada, leer salida, esperar a que termine).
Ejemplo Básico con el Módulo
subprocess
:
Cuándo Usar os
vs.
subprocess
:
- Utiliza el módulo
os
para
tareas básicas del sistema operativo como manipulación del sistema de
archivos, obtención de información del entorno y operaciones simples.
- Utiliza el módulo
subprocess
para ejecutar comandos externos con mayor control, capturar su salida,
enviarles entrada y gestionar errores de forma segura.
subprocess.run()
es la función recomendada para la mayoría de los
casos. Evita os.system()
cuando la seguridad es una
preocupación o necesitas un control más fino sobre el proceso hijo.
Con los módulos os
y
subprocess
, Python se convierte en una herramienta muy versátil para
automatizar una amplia gama de tareas del sistema operativo, desde la gestión de
archivos hasta la ejecución de comandos complejos y la interacción con otros
programas. Recuerda siempre considerar la seguridad al ejecutar comandos
externos, especialmente si la entrada proviene de fuentes no confiables.