Ho un comando che funziona alla grande sulla riga di comando. Ha molti argomenti come cmd --thing foo --stuff bar -a b input output
Utilizzo di python per eseguire altri programmi
Voglio eseguire questo da python e bloccare in attesa che si completi. Poiché lo script stampa le cose su stdout
e stderr
, voglio che venga mostrato immediatamente all'utente.
Qual è il modulo giusto per questo?
ho provato:
import commands
output = commands.getoutput("cmd --thing foo --stuff bar -a b input output")
print output
questa grande opera, tranne il stdout
non viene restituito fino alla fine.
import os
os.system("cmd --thing foo --stuff bar -a b input output")
questa stampa tutti l'uscita quando il cmd è effettivamente finito.
import subprocess
subprocess.call(["cmd", "--thing foo", "--stuff bar", "-a b", "input", "output"])
questo non passa i parametri in modo corretto in qualche modo (non sono stato in grado di trovare l'esatto problema, ma cmd
sta rifiutando il mio ingresso). Se metto echo
come primo parametro, stampa il comando che funziona perfettamente quando lo incollo direttamente nel terminale.
import subprocess
subprocess.call("cmd --thing foo --stuff bar -a b input output")
esattamente lo stesso come sopra.
Risolto. Grazie. –