В чем разница между подпроцессом Popen и вызовом (как я могу их использовать)?
Я хочу вызвать внешнюю программу из Python. Я использовал оба Popen()
и call()
для этого.
в чем разница между ними?
моя конкретная цель-запустить следующую команду из Python. Я не уверен, как редиректы работают.
./my_script.sh > output
я прочитала документация и он говорит, что call()
это функция удобства или функция быстрого доступа. Мы теряем какую-либо власть, используя call()
вместо Popen()
?
1 ответ:
есть два способа сделать переадресацию. Оба применяются к любому
subprocess.Popen
илиsubprocess.call
.
установите аргумент ключевого слова
shell = True
илиexecutable = /path/to/the/shell
и укажите команду так же, как у вас там.поскольку вы просто перенаправляете вывод в файл, установите аргумент ключевого слова
stdout = an_open_writeable_file_object
где объект указывает на .
subprocess.Popen
является более общим чемsubprocess.call
.
Popen
не блокирует, позволяя вам взаимодействовать с процессом во время его работы или продолжать другие вещи в вашей программе Python. Звонок вPopen
возвращает a