16. Приложение

16.1. Интерактивный режим

16.1.1. Обработка ошибок

При возникновении ошибки интерпретатор выводит сообщение об ошибке и трассировку стека. В интерактивном режиме он затем возвращается к основному запросу; когда ввод данных поступает из файла, он завершает работу с ненулевым статусом завершения после печати трассировки стека. (Исключения, обрабатываемые предложением except в операторе try, в данном контексте не являются ошибками.) Некоторые ошибки являются безусловно фатальными и приводят к завершению работы с ненулевым статусом завершения; это относится к внутренним несоответствиям и некоторым случаям нехватки памяти. Все сообщения об ошибках записываются в стандартный поток ошибок; обычный вывод выполняемых команд записывается в стандартный формат вывода.

Ввод символа прерывания (обычно Control-C или Delete) в основной или вспомогательный запрос отменяет ввод и возвращает к основному запросу. [1] При вводе прерывания во время выполнения команды возникает исключение KeyboardInterrupt, которое может быть обработано оператором try.

16.1.2. Исполняемые скрипты на Python

В системах Unix, подобных BSD, скрипты Python можно сделать непосредственно исполняемыми, как и сценарии оболочки, введя строку

#!/usr/bin/env python3.5

(предполагая, что интерпретатор находится на пользовательском PATH) в начале скрипта и переводит файл в режим исполняемого файла. #! должен быть первыми двумя символами файла. На некоторых платформах эта первая строка должна заканчиваться строкой в стиле Unix ('\n'), а не Windows ('\r\n'). Обратите внимание, что хэш, или символ pound, '#' используется для начала комментария в Python.

Скрипту можно присвоить исполняемый режим или разрешение, используя команду chmod.

$ chmod +x myscript.py

В системах Windows нет понятия «исполняемый режим». Программа установки Python автоматически связывает файлы .py с файлами python.exe, так что двойной щелчок по файлу Python запускает его как скрипт. Расширение также может быть .pyw, в этом случае окно консоли, которое обычно отображается, будет закрыто.

16.1.3. Интерактивный файл запуска

Когда вы используете Python в интерактивном режиме, часто бывает удобно, чтобы некоторые стандартные команды выполнялись при каждом запуске интерпретатора. Вы можете сделать это, установив переменную окружения с именем PYTHONSTARTUP в качестве имени файла, содержащего ваши команды запуска. Это похоже на функцию .profile оболочек Unix.

Этот файл читается только в интерактивных сеансах, а не тогда, когда Python считывает команды из скрипта, и не тогда, когда /dev/tty указывается в качестве явного источника команд (который в противном случае ведет себя как интерактивный сеанс). Он выполняется в том же пространстве имен, где выполняются интерактивные команды, так что объекты, которые он определяет или импортирует, могут использоваться в интерактивном сеансе без каких-либо оговорок. Вы также можете изменить подсказки sys.ps1 и sys.ps2 в этом файле.

Если вы хотите прочитать дополнительный файл запуска из текущего каталога, вы можете запрограммировать это в глобальном файле запуска, используя код, подобный if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()). Если вы хотите использовать файл запуска в скрипте, вы должны сделать это явно в скрипте:

import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
    with open(filename) as fobj:
        startup_file = fobj.read()
    exec(startup_file)

16.1.4. Модули настройки

В Python есть два способа настройки: sitecustomize и usercustomize. Чтобы увидеть, как это работает, вам сначала нужно найти местоположение вашего пользовательского каталога site-packages. Запустите Python и запустите этот код:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.5/site-packages'

Теперь вы можете создать файл с именем usercustomize.py в этом каталоге и поместить в него все, что захотите. Это повлияет на каждый вызов Python, если только он не запускается с параметром -s, отключающим автоматический импорт.

sitecustomize работает аналогично, но обычно создается администратором компьютера в глобальном каталоге пакетов сайта и импортируется до usercustomize. Более подробную информацию смотрите в документации к модулю site.

Сноски

Вернуться на верх