J'ai une commande qui marche bien sur la ligne de commande. Il a beaucoup d'arguments comme cmd --thing foo --stuff bar -a b input output
Utiliser python pour exécuter d'autres programmes
Je veux lancer ceci à partir de python et bloque l'attente pour qu'il se termine. Comme le script imprime les choses à stdout
et stderr
je veux qu'il soit immédiatement montré à l'utilisateur.
Quel est le bon module pour cela?
J'ai essayé:
import commands
output = commands.getoutput("cmd --thing foo --stuff bar -a b input output")
print output
Cela fonctionne très bien, sauf la stdout
n'est pas retourné jusqu'à la fin.
import os
os.system("cmd --thing foo --stuff bar -a b input output")
cette imprime toute la sortie lorsque le cmd est effectivement terminé.
import subprocess
subprocess.call(["cmd", "--thing foo", "--stuff bar", "-a b", "input", "output"])
cela ne passe pas correctement les paramètres d'une certaine manière (je ne l'ai pas été en mesure de trouver le problème exact, mais cmd
rejette mon entrée). Si je mets echo
comme premier paramètre, il imprime la commande qui fonctionne parfaitement lorsque je le colle directement dans le terminal.
import subprocess
subprocess.call("cmd --thing foo --stuff bar -a b input output")
exactement la même chose que ci-dessus.
Fixé. Je vous remercie. –