Рубрики
Без рубрики

Среда выполнения

Автор оригинала: 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