В этом разделе представлены специальные значения, которые могут принимать аргументы 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'