Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
ext:call [2021/01/18 11:43]
127.0.0.1 внешнее изменение
— (текущий)
Строка 1: Строка 1:
-<div slide> 
-====== Исполнение внешних программ ====== 
- 
-===== Запуск с ожиданием завершения ===== 
- 
-Простейший метод запуска программы метод ''os.system'': 
- 
-<sxh python> 
-import os 
- 
-ret = os.system("ls -la") 
-# Программа ждет завершения команды 
-# вызванной через os.system 
- 
-# Код возврата ret 
-</sxh> 
- 
-</div><div slide> 
- 
-===== Запуск без ожидания завершения ===== 
- 
-Метод ''subprocess.Popen'' по умолчанию запускает процесс без ожидания завершения: 
- 
-<sxh python> 
-import subprocess 
- 
-subprocess.Popen(["long_time_process"]) 
-</sxh> 
- 
-</div><div slide> 
- 
-===== Запуск с получением вывода ===== 
- 
-<sxh python> 
-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 
-</sxh> 
- 
-</div><div slide> 
-===== Что еще нужно знать о запуске внешних программ ===== 
- 
-  * Если вы нажимаете Ctrl-C пока внешняя программа запущена через os.system, то этот сигнал уйдет ей, а не Python. 
-  * Можно взаимодействовать с интерактивными консольными приложениями пока те запущены, но это не просто. 
-  * Большинство приложений с графическим интерфейсом в качестве первого и единственного аргумента принимают имя файла, который должен быть в них открыт. 
-  * Выполнить принудительное завершение запущенной внешней программы можно только в случае, если она запущена через ''Popen''. 
- 
-</div>