Respuestas:
Hay varias formas de hacer esto:
Una forma sencilla es usar el módulo os:
import os
os.system("ls -l")
Se pueden lograr cosas más complejas con el módulo de subproceso: por ejemplo:
import subprocess
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE)
output = test.communicate()[0]
os.system("nslookup gmail.com")
Solo devuelve la última línea 0
, pero quiero obtener la respuesta completa.
Prefiero el uso del módulo de subproceso:
from subprocess import call
call(["ls", "-l"])
La razón es que si desea pasar alguna variable en el script, esto le brinda una forma muy fácil, por ejemplo, tome la siguiente parte del código
abc = a.c
call(["vim", abc])
call(["eog", "1breeproposal.png", "-f"])
De hecho, cualquier pregunta sobre el subproceso será una buena lectura.
También deberías mirar en los comandos.getstatusoutput
Esto devuelve una tupla de longitud 2. El primero es el entero devuelto (0 - cuando los comandos son exitosos) el segundo es la salida completa como se mostrará en la terminal.
Para ls
import commands
s=commands.getstatusoutput('ls')
print s
>> (0, 'file_1\nfile_2\nfile_3')
s[1].split("\n")
>> ['file_1', 'file_2', 'file_3']
import os
os.system("echo 'hello world'")
Esto debería funcionar. No sé cómo imprimir la salida en Python Shell.
El os.popen () es bastante simple de usar, pero es obsoleta desde Python 2.6. Deberías usar el subproceso módulo de .
Leer aquí: leer un os.popen (comando) en una cadena
En un cuaderno jupyter puede utilizar la función mágica !
!echo "execute a command"
files = !ls -a /data/dir/ #get the output into a variable
Para ejecutar esto como un .py
script, necesitaría usaripython
files = get_ipython().getoutput('ls -a /data/dir/')
ejecutar script
$ ipython my_script.py
Puede importar el módulo 'os' y usarlo así:
import os
os.system('#DesiredAction')
para python3 use subproceso
import subprocess
s = subprocess.getstatusoutput(f'ps -ef | grep python3')
print(s)