16. Додаток¶
16.1. Інтерактивний режим¶
16.1.1. Обробка помилок¶
When an error occurs, the interpreter prints an error message and a stack trace.
In interactive mode, it then returns to the primary prompt; when input came from
a file, it exits with a nonzero exit status after printing the stack trace.
(Exceptions handled by an except
clause in a try
statement
are not errors in this context.) Some errors are unconditionally fatal and
cause an exit with a nonzero exit; this applies to internal inconsistencies and
some cases of running out of memory. All error messages are written to the
standard error stream; normal output from executed commands is written to
standard output.
Введення символу переривання (зазвичай Control-C або Delete) у основному чи додатковому командному рядку скасовує введення та повертає до основного командного рядка. 1 Введення переривання під час виконання команди викликає виключення KeyboardInterrupt
, яке може бути оброблено оператором try
.
16.1.2. Виконувані скрипти Python¶
У BSD Unix системах скрипти 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 provides two hooks to let you customize it: sitecustomize
and
usercustomize
. To see how it works, you need first to find the location
of your user site-packages directory. Start Python and run this code:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.5/site-packages'
Тепер ви можете створити файл із назвою usercustomize.py
у цьому каталозі та помістити в нього все, що завгодно. Це впливатиме на кожен виклик Python, якщо його не запущено з параметром -s
для вимкнення автоматичного імпорту.
sitecustomize
works in the same way, but is typically created by an
administrator of the computer in the global site-packages directory, and is
imported before usercustomize
. See the documentation of the site
module for more details.
Виноски
- 1
Проблема з пакетом GNU Readline може запобігти цьому.