Приложение
coolcodersИнтерактивный режим
Обработка ошибок
При возникновении ошибки интерпретатор печатает сообщение об ошибке и трассировку стека. Затем в интерактивном режиме он возвращается к основному запросу; когда ввод поступает из файла, он завершает работу с ненулевым статусом выхода после печати трассировки стека. (Исключения, обрабатываемые except
предложением в try
операторе, не являются ошибками в этом контексте.) Некоторые ошибки безоговорочно фатальны и вызывают выход с ненулевым выходом; это относится к внутренним несоответствиям и некоторым случаям нехватки памяти. Все сообщения об ошибках записываются в стандартный поток ошибок; обычный вывод выполненных команд записывается в стандартный вывод.
Ввод символа прерывания (обычно Control-C или Delete) в основной или дополнительный запрос отменяет ввод и возвращается к основному запросу. Ввод прерывания во время выполнения команды вызывает KeyboardInterrupt
исключение, которое может быть обработано try
оператором.
Исполняемые скрипты Python
В системах BSD Unix сценарии Python можно сделать непосредственно исполняемыми, как сценарии оболочки, путем помещения строки
#!/usr/bin/env python3.5
(предполагая, что интерпретатор находится на пользовательском PATH
) в начале скрипта и придав файлу исполняемый режим. Это #!
должны быть первые два символа файла. На некоторых платформах эта первая строка должна заканчиваться окончанием строки в стиле Unix ( '\n'
), а не '\r\n'
окончанием строки Windows. Обратите внимание, что символ решетки '#'
используется для начала комментария в Python.
Сценарию можно предоставить исполняемый режим или разрешение с помощью команды chmod .
$ chmod +x myscript.py
В системах Windows нет понятия «исполняемый режим». Установщик Python автоматически связывает .py
файлы с, python.exe
так что двойной щелчок по файлу Python запускает его как сценарий. Расширение также может быть .pyw
, в этом случае окно консоли, которое обычно появляется, подавляется.
Автозапуск программ в интерактивном режиме
Когда вы используете 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)
Модули настройки
Python предоставляет два крючка, позволяющих вам настраивать его: sitecustomize
и usercustomize
. Чтобы увидеть, как это работает, вам нужно сначала найти расположение каталога пакетов сайта пользователя. Запустите Python и запустите этот код:
>>> import site >>> site.getusersitepackages() '/home/user/.local/lib/python3.5/site-packages'
Теперь вы можете создать файл с именем usercustomize.py
в этом каталоге и поместить в него все, что захотите. Это повлияет на каждый вызов Python, если он не запущен с -s
возможностью отключения автоматического импорта.
sitecustomize
работает таким же образом, но обычно создается администратором компьютера в глобальном каталоге пакетов сайтов и импортируется раньше usercustomize
.
Заключение
Пост создан для тг-канала @coolcoders