В чем разница между подпроцессом Popen и вызовом (как я могу их использовать)?


Я хочу вызвать внешнюю программу из Python. Я использовал оба Popen() и call() для этого.

в чем разница между ними?

моя конкретная цель-запустить следующую команду из Python. Я не уверен, как редиректы работают.

./my_script.sh > output

я прочитала документация и он говорит, что call() это функция удобства или функция быстрого доступа. Мы теряем какую-либо власть, используя call() вместо Popen()?

1 142

1 ответ:

есть два способа сделать переадресацию. Оба применяются к любому subprocess.Popen или subprocess.call.

  1. установите аргумент ключевого слова shell = True или executable = /path/to/the/shell и укажите команду так же, как у вас там.

  2. поскольку вы просто перенаправляете вывод в файл, установите аргумент ключевого слова

    stdout = an_open_writeable_file_object
    

    где объект указывает на .

subprocess.Popen является более общим чем subprocess.call.

Popen не блокирует, позволяя вам взаимодействовать с процессом во время его работы или продолжать другие вещи в вашей программе Python. Звонок в Popen возвращает a