Это старая версия документа!
Исполнение внешних программ
Запуск с ожиданием завершения
Простейший метод запуска программы метод os.system
:
import os
ret = os.system("ls -la")
# Программа ждет завершения команды
# вызванной через os.system
# Код возврата ret
Запуск без ожидания завершения
Метод subprocess.Popen
по умолчанию запускает процесс без ожидания завершения:
import subprocess
subprocess.Popen(["long_time_process"])
Запуск с получением вывода
from subprocess import Popen, PIPE
p = Popen(['ls', '-la'], stdout=PIPE, stderr=PIPE)
# Процесс создан, но не запущен
appout, apperr = p.communicate()
# Процесс запущен, ждем завершения
ret = p.returncode
# appout и apperr — данные типа bytes
# выведенные программой в stdout и stderr
# код возврата ret
Что еще нужно знать о запуске внешних программ
- Если вы нажимаете Ctrl-C пока внешняя программа запущена через os.system, то этот сигнал уйдет ей, а не Python.
- Можно взаимодействовать с интерактивными консольными приложениями пока те запущены, но это не просто.
- Большинство приложений с графическим интерфейсом в качестве первого и единственного аргумента принимают имя файла, который должен быть в них открыт.
- Выполнить принудительное завершение запущенной внешней программы можно только в случае, если она запущена через
Popen
.
ext/call.1610970215.txt.gz · Последнее изменение: 2021/01/18 11:43 — 127.0.0.1
Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International