Получение кода завершения с помощью модуля subprocess

poluchenie koda zaversheniya s pomoshhju modulya subprocess Системные инструменты параллельного выполнения

Модуль subprocess позволяет получить код завершения различными способами, как было показано в главах 2 и 3 (значение None в атрибуте returncode указывает, что дочерний процесс еще не завершился):

C:\\PP4E\System\Exits> python

>  >> from subprocess import Popen, PIPE, call

>  >> pipe = Popen(‘python testexit_sys.py’, stdout=PIPE)

>>> pipe.stdout.read()

b’Bye sys world\r\n’

>>> pipe.wait()

42

>>> call(‘python testexit_sys.py’)

Bye sys world

42

>>> pipe = Popen(‘python testexit_sys.py’, stdout=PIPE)

>>> pipe.communicate()

(b’Bye sys world\r\n’, None)

>>> pipe.returncode

42

Модуль subprocess действует аналогично и на Unix-подобных платформах, таких как Cygwin, но в отличие от функции os.popen, код завершения не преобразуется в битовую маску, и поэтому он совпадает с результатом в Windows (обратите внимание, что при использовании в Cygwin и в Unix-подобных системах требуется установить аргумент shell=True, как мы узнали в главе 2, тогда как в Windows этот аргумент требуется установить только для запуска встроенных команд оболочки, таких как dir):

[C:\…\PP4E\System\Exits]$ python

>>> from subprocess import Popen, PIPE, call

>>> pipe = Popen(‘python testexit_sys.py’, stdout=PIPE, shell=True)

>>> pipe.stdout.read()

b’Bye sys world\n’

>>> pipe.wait()

42

>>> call(‘python testexit_sys.py’, shell=True)

Bye sys world

42

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий