В этом разделе представлены специальные значения, которые могут принимать аргументы stdin
, stdout
или stderr
модуля subprocess
.
subprocess.DEVNULL
:Специальное значение, которое может использоваться в качестве аргумента stdin
, stdout
или stderr
для subprocess.Popen()
и указывает, что будет использоваться специальный файл os.devnull
.
>>> import subprocess >>> result = subprocess.run(['ping', '-c', '3', '-n', 'yandex.ru'], \ stdout=subprocess.DEVNULL, encoding='utf-8') >>> print(result.stdout) # None >>> result = subprocess.run(['ping', '-c', '3', '-n', '0.0.0.host'], \ stderr=subprocess.DEVNULL, encoding='utf-8') >>> print(result.stderr) # None
subprocess.PIPE
:Специальное значение, которое может использоваться как аргумент stdin
, stdout
или stderr
для subprocess.Popen()
и указывает, что канал к стандартному потоку должен быть открыт.
Использование значения subprocess.PIPE
наиболее полезно с объектом subprocess.Popen.communicate()
.
>>> import subprocess >>> result = subprocess.run(['ping', '-c', '3', '-n', 'yandex.ru'], \ stdout=subprocess.PIPE, encoding='utf-8') >>> result.stdout # PING yandex.ru (5.255.255.50) 56(84) bytes of data. # 64 bytes from 5.255.255.50: icmp_seq=1 ttl=249 time=14.5 ms # 64 bytes from 5.255.255.50: icmp_seq=2 ttl=249 time=14.5 ms # 64 bytes from 5.255.255.50: icmp_seq=3 ttl=249 time=14.6 ms # # --- yandex.ru ping statistics --- # 3 packets transmitted, 3 received, 0% packet loss, time 2003ms # rtt min/avg/max/mdev = 14.551/14.578/14.619/0.102 ms
subprocess.STDOUT
:Специальное значение, которое может использоваться в качестве аргумента stderr
для subprocess.Popen()
и указывает, что стандартная ошибка stderr
должна идти в том же дескрипторе, что и стандартный вывод stdout
.
>>> import subprocess >>> result = subprocess.run(['ping', '-c', '3', '-n', 'host.host'], \ stderr=subprocess.STDOUT, \ stdout=subprocess.PIPE, encoding='utf-8') >>> result.stdout # 'ping: host.host: Неизвестное имя или служба\n'