Содержание страницы
16. Приложение¶Appendix
16.1. Интерактивный режим¶Interactive Mode
16.1.1. Обработка ошибок¶Error Handling
Когда возникает ошибка, интерпретатор выводит сообщение об ошибке и трассировку стека. В интерактивном режиме он затем возвращается к основному приглашению; если входные данные поступили из файла, он завершает работу с ненулевым кодом возврата после вывода трассировки стека. (Исключения, обрабатываемые предложением except в операторе try, в данном контексте не считаются ошибками.) Некоторые ошибки являются безусловно фатальными и приводят к завершению с ненулевым кодом; это относится к внутренним противоречиям и некоторым случаям нехватки памяти. Все сообщения об ошибках записываются в стандартный поток ошибок; обычный вывод выполняемых команд направляется в стандартный вывод.
Ввод символа прерывания (обычно Control-C или Delete) на основном или дополнительном приглашении отменяет ввод и возвращает к основному приглашению. [1] Ввод прерывания во время выполнения команды вызывает исключение KeyboardInterrupt, которое может быть обработано оператором try.
16.1.2. Исполняемые скрипты Python¶Executable Python Scripts
В Unix-системах BSD-подобного типа сценарии Python можно сделать непосредственно исполняемыми, как сценарии оболочки, поместив строку
#!/usr/bin/env python3.4
(предполагая, что интерпретатор находится в PATH пользователя) в начале скрипта и установив файлу режим исполняемого. Символы #! должны быть первыми двумя символами файла. На некоторых платформах эта первая строка должна заканчиваться переводом строки в стиле Unix ('\n'), а не Windows ('\r\n'). Обратите внимание, что символ решётки '#' используется для начала комментария в Python.
Сценарию можно установить режим исполняемого файла, или разрешение, с помощью команды chmod.
$ chmod +x myscript.py
В системах Windows нет понятия «исполняемый режим». Установщик Python автоматически связывает файлы .py с python.exe, так что двойной щелчок по файлу Python запускает его как скрипт. Расширение также может быть .pyw; в этом случае окно консоли, которое обычно появляется, подавляется.
16.1.3. Файл интерактивного запуска¶The Interactive Startup File
При интерактивном использовании 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. Модули настройки¶The Customization Modules
Python предоставляет две точки подключения для настройки: sitecustomize и usercustomize. Чтобы увидеть, как это работает, сначала нужно найти расположение вашего каталога site-packages для пользователя. Запустите Python и выполните следующий код:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.4/site-packages'
Теперь вы можете создать файл с именем usercustomize.py в этом каталоге и поместить туда всё, что захотите. Этот файл будет влиять на каждый запуск Python, если только он не запущен с опцией -s, отключающей автоматический импорт.
sitecustomize работает аналогично, но обычно создаётся администратором компьютера в глобальном каталоге site-packages и импортируется до usercustomize. Подробнее см. документацию модуля site.
Сноски
| [1] | Проблема с пакетом GNU Readline может помешать этому. |