Автор оригинала: Doug Hellmann.
sys
предоставляет низкоуровневые API-интерфейсы для взаимодействия с системой вне приложения, принимая аргументы командной строки, получая доступ к вводу пользователя и передавая пользователю сообщения и значения состояния.
Аргументы командной строки
Аргументы, захваченные интерпретатором, обрабатываются там и не передаются в выполняемую программу. Любые оставшиеся параметры и аргументы, включая имя самого сценария, сохраняются в sys.argv
на случай, если программе действительно необходимо их использовать.
sys_argv.py
import sys print('Arguments:', sys.argv)
В третьем примере параметр -u
понимается интерпретатором и не передается в выполняемую программу.
$ python3 sys_argv.py Arguments: ['sys_argv.py'] $ python3 sys_argv.py -v foo blah Arguments: ['sys_argv.py', '-v', 'foo', 'blah'] $ python3 -u sys_argv.py Arguments: ['sys_argv.py']
Смотрите также
- argparse – Модуль для разбора аргументов командной строки.
Входные и выходные потоки
Следуя парадигме Unix, программы Python по умолчанию могут обращаться к трем файловым дескрипторам.
sys_stdio.py
import sys print('STATUS: Reading from stdin', filesys.stderr) data sys.stdin.read() print('STATUS: Writing data to stdout', filesys.stderr) sys.stdout.write(data) sys.stdout.flush() print('STATUS: Done', filesys.stderr)
stdin
– это стандартный способ чтения ввода, обычно с консоли, но также и из других программ через конвейер. stdout
– это стандартный способ записи вывода для пользователя (на консоль) или отправки следующей программе в конвейере. stderr
предназначен для использования с предупреждениями или сообщениями об ошибках.
$ cat sys_stdio.py | python3 -u sys_stdio.py STATUS: Reading from stdin STATUS: Writing data to stdout #!/usr/bin/env python3 #end_pymotw_header import sys print('STATUS: Reading from stdin', data = sys.stdin.read() print('STATUS: Writing data to stdout', sys.stdout.write(data) sys.stdout.flush() print('STATUS: Done', STATUS: Done
Смотрите также
- подпроцесс и
каналы
– и подпроцесс, и каналы имеют функции для совместной конвейерной обработки программ.
Статус возврата
Чтобы вернуть код выхода из программы, передайте целочисленное значение в sys.exit ()
.
sys_exit.py
import sys exit_code int(sys.argv[1]) sys.exit(exit_code)
Ненулевое значение означает, что программа завершилась с ошибкой.
$ python3 sys_exit.py 0 ; echo "Exited $?" Exited 0 $ python3 sys_exit.py 1 ; echo "Exited $?" Exited 1