El módulo subprocess en Python es una poderosa herramienta que nos permite iniciar nuevos procesos, conectarnos a sus canales de entrada/salida/errores y obtener sus códigos de retorno. Este módulo permite ejecutar comandos de la misma manera que en una terminal.
Aquí hay un ejemplo simple de cómo usar el módulo subprocess:
```python
import subprocess
subprocess.run([“echo”, “Hola Mundo”])
```
La función `run()` usada aquí ejecuta el comando especificado, espera a que termine y luego devuelve un objeto `CompletedProcess` que tiene información como el código de retorno y cualquier salida capturada.
Si queremos capturar la salida estándar (stdout) del comando que ejecutamos, debemos especificar el argumento `stdout` correspondiente como `subprocess.PIPE`:
```python
import subprocess
result = subprocess.run([“echo”, “Hola Mundo”], stdout=subprocess.PIPE)
print(result.stdout)
```
Esto imprimirá la salida del comando “echo”.
Para ejecutar un comando con múltiples argumentos, debemos pasar una lista de strings:
```python
import subprocess
subprocess.run([‘ls’, ‘-l’])
```
Esto ejecutará el comando `ls -l`.
Si queremos ejecutar varios comandos en un solo comando, podemos hacer uso del shell=True como argumento en la función run() de esta manera:
```python
import subprocess
subprocess.run(‘echo Hola && echo Mundo’, shell=True)
```
Esto ejecutará los comandos `echo Hola && echo Mundo`.
Ten en cuenta que el uso de `shell=True` puede ser un riesgo de seguridad si estás utilizando una entrada no confiable.
Para manejar errores, puedes observar el atributo `returncode` del objeto devuelto. Si es diferente de cero, algo salió mal:
```python
import subprocess
result = subprocess.run([‘ls’, ‘-l’, ‘no_existe’], stderr=subprocess.PIPE)
if result.returncode != 0:
print(“Hubo un error:”, result.stderr)
```
Esto imprimirá un mensaje de error si el archivo ‘no_existe’ no existe.