@ resposta de milne funciona, mas subprocess.call()
lhe dá pouco feedback.
Eu prefiro usar subprocess.check_output()
para que você possa analisar o que foi impresso no stdout:
import subprocess
res = subprocess.check_output(["sudo", "apt", "update"])
for line in res.splitlines():
# process the output line by line
check_output
gera um erro na saída zero do comando invocado
Por favor, note que isso não invoca bash
ou outro shell se você não especificar o argumento shell
para a função (o mesmo vale para subprocess.call()
, e você não deveria se não for necessário como isso impõe um risco de segurança), ele invoca diretamente o comando.
Se você estiver fazendo muitas invocações de comando (diferentes) do Python, você pode querer olhar para plumbum . Com isso você pode fazer o (IMO) mais legível:
from plumbum.cmd import sudo, apt, echo, cut
res = sudo[apt["update"]]()
chain = echo["hello"] | cut["-c", "2-"]
chain()