Spec-Zone.ru › Python 3.8

Приложение

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

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

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

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

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

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

#!/usr/bin/env python3.5

(предполагая, что интерпретатор находится в PATH пользователя) в начале скрипта и предоставления файлу исполнительного режима. #! должны быть первыми двумя символами файла. В некоторых системах эта первая строка должна заканчиваться концом строки в стиле Unix ('\n'), а не концом строки в стиле Windows ('\r\n'). Обратите внимание, что символ решётки или фунта '#', используется для начала комментария в 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. Чтобы увидеть, как это работает, вам нужно сначала найти расположение каталога usercustomize.py вашего пользователя. Запустите Python и выполните этот код:

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

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

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

Примечания

1

Проблема с пакетом GNU Readline может помешать этому.

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/tutorial/appendix.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API