У меня есть команда, которая отлично работает в командной строке. У этого есть много аргументов, таких как cmd --thing foo --stuff bar -a b input output
Использование python для запуска других программ
Я хочу запустить это из python и блокировать его до завершения. Поскольку сценарий печатает вещи до stdout
и stderr
, я хочу, чтобы это было немедленно показано пользователю.
Что такое правильный модуль для этого?
Я пробовал:
import commands
output = commands.getoutput("cmd --thing foo --stuff bar -a b input output")
print output
это прекрасно работает, кроме stdout
не не возвращается до конца.
import os
os.system("cmd --thing foo --stuff bar -a b input output")
это печатает все выходные, когда CMD фактически закончена.
import subprocess
subprocess.call(["cmd", "--thing foo", "--stuff bar", "-a b", "input", "output"])
это не передать параметры правильно как-то (я не смог найти точную проблему, но cmd
отклоняет мой вход). Если я ставлю echo
в качестве первого параметра, он выдает команду, которая отлично работает, когда я вставляю ее непосредственно в терминал.
import subprocess
subprocess.call("cmd --thing foo --stuff bar -a b input output")
точно так же, как описано выше.
Исправлено. Спасибо. –