Далее, в примере 11.2 приводится файл запуска с расширением .pyw, используемый для подавления окна консоли DOS в Windows, которое выводится при запуске в некоторых режимах (например, двойным щелчком). Окно консоли по-прежнему можно получить при запуске файла с расширением .py (например, чтобы увидеть вывод, генерируемый программным кодом, запускаемым редактором в режиме выполнения единственной инструкции). Двойной щелчок на этом файле дает тот же эффект, что и запуск PyEdit с помощью панели запуска PyDemos или PyGadgets.
Пример 11.2. PP4E\Gui\TextEditor\textEditorNoConsole.pyw
запускает редактор и подавляет вывод окна консоли DOS в Windows; с тем же успехом можно было бы просто присвоить расширение .pyw основному файлу, что не помешало бы возможности импортировать его, но файл .py был оставлен, чтобы иметь возможность наблюдать вывод в консоли exec(open(‘textEditor.py’).read()) # как будто содержимое файла вставляется
# сюда (или textEditor.main())
Пример 11.2 прекрасно справляется с возложенной на него задачей, но когда я обновлял эту книгу, мне надоело использовать каждый раз Notepad для просмотра текстовых файлов из командных строк, запускаемых из произвольных мест, поэтому я написал сценарий, представленный в примере 11.3, который запускает PyEdit более универсальным и автоматизированным способом. Этот сценарий подавляет вывод консоли DOS, подобно примеру 11.2, когда запускается щелчком мыши на ярлыке в Windows, но дополнительно выполняет настройку пути поиска модулей на компьютерах, где я не использовал Панель Управления (Control Panel) для этого, и позволяет запускать редактор, даже когда он находится за пределами текущего рабочего каталога.
Пример 11.3. PP4E\Gui\TextEditor\pyedit.pyw
#!/usr/bin/python
удобный сценарий для запуска pyedit из произвольного каталога, выполняет необходимую корректировку пути поиска модулей; sys.path при импортировании и функции open() требуется передавать путь относительно известного пути к каталогу со сценарием, а не относительно текущего рабочего каталога, потому что текущим является каталог сценария, только если сценарий запускается щелчком на ярлыке, а при вводе команды в командной строке он может находиться в любом другом каталоге: использует путь из argv; этому файлу дано расширение .pyw, чтобы подавить вывод окна консоли в Windows; добавьте каталог с этим сценарием в системную переменную PATH, чтобы иметь возможность запускать его из командной строки; также может использоваться в Unix: символы / и \ обрабатываются переносимым образом;
import sys, os
mydir = os.path.dirname(sys.argv[0]) # использовать каталог сценария для
# open, sys.path
sys.path.insert(1, os.sep.join([mydir] + [‘..’]*3)) # импорт: PP4E — корень, # 3 уровнями выше
exec(open(os.path.join(mydir, ‘textEditor.py’)).read())
Чтобы запустить его из командной строки в окне консоли, достаточно, чтобы путь к каталогу со сценарием находился в системной переменной окружения PATH, — действие, выполняемое в первой строке в следующем фрагменте, достаточно было бы выполнить один раз в Панели Управления (Control Panel) Windows:
C:\…\PP4E\Internet\Web> set PATH=%PATH%;C:\…\PP4E\Gui\TextEditor
C:\…\PP4E\Internet\Web> pyedit.pyw test-cookies.py
Этот сценарий также работает и в Unix, хотя в нем нет необходимости, если правильно установить переменные окружения PYTHONPATH и PATH (после этого можно запускать textEditor.py непосредственно), — а я не стал выполнять эти настройки на всех моих компьютерах. Ради интереса можно попробовать зарегистрировать этот сценарий как средство автоматического открытия файлов «.txt» при щелчке на них или при вводе их имен в командной строке (если, конечно, вы спокойно перенесете расставание с Notepad).
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011