Главная страница
Навигация по странице:

  • C:\python25\python spam.py

  • Трюк с использованием команды env в UNIX

  • Щелчок на ярлыке в Windows

  • Использование функции raw_input

  • Математический анализ. 3е издание


    Скачать 4.86 Mb.
    Название3е издание
    АнкорМатематический анализ
    Дата04.02.2022
    Размер4.86 Mb.
    Формат файлаpdf
    Имя файлаpython_01.pdf
    ТипДокументы
    #351981
    страница11 из 98
    1   ...   7   8   9   10   11   12   13   14   ...   98
    78
    Глава 3. Как пользователь запускает программы
    Notepad или редактор IDLE) и сохраните следующие две инструкции в файле с именем spam.py:
    print 2 ** 8 # Возведение в степень
    print 'the bright side ' + 'of life' # Знак + означает конкатенацию строк
    Этот файл содержит две инструкции print и пару комментариев спра
    ва. (Текст, который следует за символом #, просто игнорируется и счи
    тается комментарием, созданным для удобства человека; коммента
    рии не являются частью инструкций.) Пока не нужно вникать в син
    таксис программного кода в этом файле. Главное здесь то, что про
    граммный код вводится в текстовый файл, а не в интерактивной командной оболочке интерпретатора Python. Итак, вы создали полно
    ценный сценарий на языке Python.
    Сохранив этот текстовый файл, вы сможете предложить интерпрета
    тору Python выполнить его, указав полное имя файла в качестве пер
    вого аргумента команды python, введя следующую строку в системной командной строке:
    % python spam.py
    256
    the bright side of life
    И в этом случае также вы должны использовать командную оболочку,
    которая предоставляется вашей операционной системой, – в окне
    Ко
    мандная строка (Command Prompt) в Windows, в xterm или в подобных им программах. Не забывайте заменять слово «python» на полный путь к исполняемому файлу интерпретатора, если переменная окружения
    PATH
    у вас не настроена. Вывод этого сценария можно наблюдать ниже строки, где была введена команда, – это результат работы двух инст
    рукций print, находящихся в текстовом файле.
    Обратите внимание, что файл модуля называется spam.py. Как и лю
    бой другой файл верхнего уровня, он мог бы также называться просто
    spam
    , однако файлы, которые должны импортироваться клиентом,
    обязаны иметь расширение .py. Вопросы импорта мы будем обсуждать ниже, в этой же главе.
    Позднее вам может потребоваться импортировать тот или иной файл,
    поэтому всегда желательно использовать расширение .py в именах файлов с программным кодом на языке Python. Кроме того, некоторые текстовые редакторы определяют принадлежность файлов по расши
    рению .py – если расширение отсутствует, вы можете лишиться таких функциональных возможностей редактора, как подсветка синтаксиса и автоматическое оформление отступов.
    Поскольку в данной ситуации для запуска программ на языке Python используется командная оболочка, можно применять любые синтакси
    ческие конструкции, допускаемые командной оболочкой. Например,
    можно перенаправить вывод сценария Python в файл, чтобы детально исследовать полученные результаты позднее, как показано ниже:

    Системная командная строка и файлы
    79
    % python spam.py > saveit.txt
    В этом случае две строки, которые были показаны в предыдущем при
    мере запуска сценария, не будут выводиться на экран, а будут записа
    ны в файл saveit.txt. Это широко известная возможность перенаправ+
    ления потоков –
    она может использоваться как для вывода текста, так и для ввода. Она присутствует в Windows и в UNIXподобных систе
    мах. Она мало связана с Python (интерпретатор Python просто поддер
    живает ее), поэтому здесь мы не будем углубляться в подробности ра
    боты механизма перенаправления.
    Если вы пользуетесь операционной системой Windows, этот пример также будет работать, хотя сама командная строка будет выглядеть несколько иначе:
    C:\Python25> python spam.py
    256
    the bright side of life
    Если у вас переменная окружения PATH не настроена и не был выпол
    нен переход в каталог интерпретатора, вам необходимо вводить пол
    ный путь к исполняемому файлу интерпретатора Python:
    D:\temp> C:\python25\python spam.py
    256
    the bright side of life
    В новейших версиях Windows вы можете просто вводить имя файла сценария независимо от того, в каком каталоге вы находитесь, потому что новейшие версии системы Windows отыскивают программы, необ
    ходимые для запуска файлов, с помощью реестра Windows и вам не требуется явно указывать ее в командной строке. Например, в совре
    менных версиях Windows предыдущую команду можно упростить до:
    D:\temp> spam.py
    Наконец, не нужно забывать указывать полный путь к файлу сцена
    рия, если он находится в каталоге, отличном от того, в котором вы ра
    ботаете. Например, следующая команда будет работать в каталоге
    D:\other
    , в предположении, что путь к команде python включен в пере
    менную окружения PATH, но она должна запустить сценарий, располо
    женный в некотором другом каталоге:
    D:\other> python c:\code\myscript.py
    Использование системной командной строки и файлов
    Запуск файлов программ из командной строки системы является дос
    таточно простой задачей, особенно если вы и раньше работали с ко
    мандной строкой. Тем не менее ниже описываются несколько лову
    шек, в которые часто попадают начинающие:

    Остерегайтесь автоматического присвоения расширения файлам
    в операционной системе Windows. Если для создания файлов про

    80
    Глава 3. Как пользователь запускает программы грамм в Windows вы пользуетесь редактором
    Блокнот (Notepad), пе
    ред сохранением выбирайте тип файла
    Все файлы (All Files) и явно указывайте расширение .py. В противном случае
    Блокнот (Notepad)
    будет присваивать файлам расширение .txt (например, spam.py.txt),
    что в некоторых ситуациях осложнит запуск таких файлов.
    Хуже того, по умолчанию операционная система Windows скрывает расширения файлов, поэтому если вы забыли указать тип файла, вы можете даже не заметить, что создали обычный текстовый файл,
    а не файл, который должен запускаться интерпретатором Python.
    Здесь вам может помочь ярлык файла – если на нем отсутствует изображение головы змеи, у вас могут появиться некоторые про
    блемы с запуском. Отсутствие подсветки синтаксиса в IDLE и от
    крытие файла в редакторе вместо его запуска в результате щелчка мышью могут служить еще одним признаком этой проблемы.
    Текстовый процессор Microsoft Word похожим образом по умолча
    нию добавляет расширение .doc. Мало этого, он добавляет в файл символы форматирования, которые являются недопустимыми с точ
    ки зрения синтаксиса Python. Поэтому возьмите за правило всегда выбирать тип файла
    Все файлы (All Files) при сохранении в операцион
    ной системе Windows или используйте более удобные для програм
    мистов текстовые редакторы, такие как IDLE. IDLE не добавляет рас
    ширение к имени файла автоматически, даже расширение .py – эта особенность нравится программистам, но не пользователям.

    Указывайте расширение в командной строке, но не в инструкциях
    импорта. Не забывайте указывать полное имя файла в командной строке, то есть используйте, например, команду python spam.py, а не python spam. Инструкция import, с которой мы познакомимся ниже,
    в этой же главе, требует, чтобы путь к файлу и его расширение бы
    ли опущены (например, import spam). Это несложно, но данная осо
    бенность часто является источником ошибок.
    Интерпретацией команды в командной строке занимается система,
    а не интерпретатор Python, поэтому в ней неприменимы правила по
    иска файлов, которые использует Python. Поэтому в командной строке необходимо всегда указывать расширение файла .py и при не
    обходимости – путь к файлу, который требуется запустить. Напри
    мер, чтобы запустить файл, находящийся в каталоге, отличном от того, в котором вы работаете, обычно необходимо указать полный путь к файлу (например, C:\python25>python d:\tests\spam.py). Однако в программном коде на языке Python вам достаточно просто указать инструкцию import spam и доверить интерпретатору самому отыскать требуемый файл в пути поиска модулей, как будет описано ниже.

    Используйте в файлах инструкции print. Да, мы уже говорили об этом, но это настолько распространенная ошибка, что она вполне заслуживает, чтобы еще раз напомнить о ней. В отличие от инте
    рактивного режима, чтобы вывести результаты работы файлов про
    грамм на экран, вы должны использовать инструкции print.

    Системная командная строка и файлы
    81
    Исполняемые сценарии в UNIX (#!)
    Если вы используете Python в UNIX, Linux или в другой UNIXподоб
    ной операционной системе, вы можете превратить файлы с программ
    ным кодом на языке Python в исполняемые программы, точно так же,
    как программы на таких языках командной оболочки, как ksh или
    csh
    . Такие файлы обычно называются исполняемыми сценариями.
    Проще говоря, исполняемые сценарии в UNIXподобных системах –
    это обычные текстовые файлы, содержащие инструкции на языке Py
    thon, но обладающие двумя необходимыми свойствами:

    Первая строка имеет специальный формат. Первая строка в сцена
    риях, как правило, начинается с символов #! (эта комбинация час
    то называется как «hash bang»), за которыми следует путь к интер
    претатору Python.

    Как правило для них установлено право на выполнение. Обычно файлы сценариев помечаются как исполняемые файлы, чтобы сооб
    щить системе, что они могут быть запущены как программы верх
    него уровня. В UNIXподобных системах это обычно делается с по
    мощью такой команды, как chmod +x file.py.
    Давайте рассмотрим пример для UNIXподобных систем. Сначала с по
    мощью текстового редактора создайте файл модуля Python с именем
    brian
    :
    #!/usr/local/bin/python print 'The Bright Side of Life...' # Это еще один комментарий
    Первая строка в файле сообщает системе, где находится интерпретатор
    Python. С технической точки зрения для интерпретатора Python пер
    вая строка является комментарием. Как уже говорилось ранее, все, что начинается с символа # и до конца строки, является комментарием –
    в них размещается дополнительная информация, предназначенная для человека, который будет читать ваш программный код. Но когда в фай
    ле присутствует комментарий, такой как в первой строке, он приобре
    тает особый смысл, потому что система использует его для поиска ин
    терпретатора, который будет выполнять остальной программный код в файле.
    Кроме того, обратите внимание, что этот файл называется просто brian,
    в его имени отсутствует расширение .py, которое мы использовали ранее для обозначения модулей. Наличие расширения .py не повредило бы
    (и даже лишний раз напоминало бы, что это файл программы на языке
    Python), но так как этот файл не планируется импортировать из дру
    гих модулей, такое имя файла является вполне допустимым. Если дать этому файлу право на выполнение с помощью команды chmod +x brian
    , вы сможете запускать его из командной строки системы, как ес
    ли бы это была самая обычная программа:
    % brian
    The Bright Side of Life...

    82
    Глава 3. Как пользователь запускает программы
    Для пользователей Windows замечу, что метод, описываемый здесь,
    характерен для UNIX и может быть неприменим на вашей платформе.
    Однако вам незачем волноваться, просто используйте метод запуска,
    который описывался выше. Укажите имя выполняемого файла, как первый аргумент команды python.
    1
    C:\book\tests> python brian
    The Bright Side of Life...
    В этом случае не требуется добавлять специальный комментарий #!
    в начало файла (хотя, если он присутствует, Python просто игнорирует его), и файл не должен иметь право на выполнение. Фактически, если вы
    1
    Как уже говорилось при обсуждении командной строки, современные вер
    сии Windows позволяют указывать в командной строке лишь имя файла с расширением .py – эти версии Windows с помощью реестра определяют,
    что данный файл должен открываться с использованием интерпретатора
    Python (например, команда brian.py в них эквивалентна команде python brian.py
    ). Такой режим работы командной строки сродни использованию #!
    в системах UNIX. Следует заметить, что некоторые программы для Win
    dows действительно могут использовать и интерпретировать первую строку
    #!
    , но командная оболочка DOS в Windows полностью игнорирует ее.
    Трюк с использованием команды env в UNIX
    В некоторых версиях системы UNIX можно избежать явного указания пути к интерпретатору Python, если специальный ком
    ментарий в первой строке оформить следующим образом:
    #!/usr/bin/env python
    ...здесь находится программный код сценария...
    При таком подходе программа env отыщет интерпретатор Py
    thon в соответствии с настройками пути поиска (то есть в боль
    шинстве командных оболочек UNIX поиск будет произведен во всех каталогах, перечисленных в переменной окружения PATH).
    Такой способ может оказаться более универсальным, так как он не требует жестко указывать во всех сценариях путь к каталогу,
    куда был установлен Python.
    Если у вас имеется доступ к программе env из любого места, ва
    ши сценарии будут запускаться независимо от того, где находит
    ся интерпретатор Python, – вам достаточно будет лишь настроить переменную окружения PATH в своих системах, не внося исправле
    ния в первую строку всех сценариев. Безусловно, этот способ предполагает, что во всех системах программа env находится в од
    ном и том же каталоге (в некоторых системах она может распо
    лагаться в каталогах /sbin, /bin или гдето еще), в противном случае о переносимости не может быть и речи.

    Щелчок на ярлыке файла
    83
    хотите обеспечить переносимость процедуры запуска между UNIX и Mi
    crosoft Windows, ваша жизнь наверняка станет проще, если вы всегда будете использовать типичный подход к запуску программ из команд
    ной строки, а не стиль, используемый для запуска сценариев в UNIX.
    Щелчок на ярлыке файла
    Использование реестра в операционной системе Windows позволяет от
    крывать файл просто щелчком мыши. При установке интерпретатор Py
    thon автоматически регистрирует себя в качестве программы, исполь
    зуемой для открытия файлов с программами на языке Python щелчком мыши. Это делает возможным запуск программ на языке Python про
    стым щелчком (или двойным щелчком) мыши на ярлыке файла.
    В операционных системах, отличных от Windows, вы наверняка сможе
    те проделать аналогичный трюк, но сами ярлыки, программа просмот
    ра файловой системы, система навигации и прочее могут несколько от
    личаться. В некоторых системах UNIX, например, может потребовать
    ся зарегистрировать расширение .py в программе просмотра файловой системы, сделать свой сценарий исполняемым файлом, использующим специальный комментарий #!, как обсуждалось в предыдущем разделе,
    или связать тип MIME файла с приложением или командой редактиро
    вания файлов за счет установки программ или с помощью других инст
    рументальных средств. Если щелчок мышью не дает нужного результа
    та, обращайтесь к документации используемой программы просмотра файловой системы за дополнительной информацией.
    Щелчок на ярлыке в Windows
    Чтобы продемонстрировать эту возможность, предположим, что у вас имеется следующая программа на языке Python, которая была сохра
    нена в файле script4.py:
    # Комментарий import sys print sys.platform print 2 ** 100
    Здесь не так много нового – всего лишь инструкция import и две инст
    рукции print (sys.platform – это всего лишь строка, идентифицирую
    щая платформу, с которой вы работаете; она определена в модуле с име
    нем sys, который необходимо импортировать). Эту программу можно запустить из командной строки системы:
    D:\LP3E\Examples> c:\python25\python script4.py
    win32 1267650600228229401496703205376
    Однако эту программу можно также запустить щелчком мыши, вооб
    ще ничего не вводя с клавиатуры. Можно попробовать отыскать ярлык этого файла, например, щелкнув на ярлыке
    Мой компьютер (My Computer)

    84
    Глава 3. Как пользователь запускает программы и выполнив переход вглубь дерева каталогов на диске D, в этом случае вы получите изображение в проводнике, как показано на рис. 3.1 (этот снимок с экрана был получен в Windows XP). В случае использования
    Python 2.5 ярлыки файлов с исходными текстами программ содержат изображение с текстом на белом фоне, а ярлыки с байткодом – изобра
    жение с текстом на черном фоне. Чаще вам придется щелкать (то есть запускать) на файлах с исходными текстами, чтобы увидеть последние изменения. Для запуска файла здесь нужно просто щелкнуть на ярлы
    ке файла script4.py.
    Использование функции raw_input
    К сожалению, запуск файла в Windows щелчком на ярлыке может не привести к удовлетворяющему вас результату. В действительности,
    как в данном примере, запуск сценария вызывает появление окна на очень короткое время, чего явно недостаточно для обеспечения обрат
    ной связи, на которую так надеются программисты, использующие язык Python! Это не ошибка, это лишь особенность обслуживания вы
    вода программы в Windows.
    По умолчанию интерпретатор Python открывает черное окно консоли
    DOS, которое будет служить местом для ввода и вывода программы.
    Если сценарий выводит какоето сообщение и завершает работу, что и происходит в приведенном примере, то окно консоли открывается,
    туда выводится текст сообщения, но по завершении программы окно закрывается и исчезает. Вы сможете увидеть этот текст, только если вы обладаете мгновенной реакцией или ваш компьютер не отличается
    Рис. 3.1. В Windows файлы с программами на языке Python отображаются
    в проводнике в виде ярлыков и могут быть запущены двойным щелчком мыши
    (хотя при этом вы можете не увидеть текст, выводимый программой,
    и сообщения об ошибках)

    Щелчок на ярлыке файла
    85
    высокой скоростью работы. Это вполне нормальное поведение, но ско
    рее всего это совсем не то, что вы имели в виду.
    К счастью, этот недостаток легко ликвидируется. Если вам требуется,
    чтобы результаты работы сценария оставались на экране после щелч
    ка мышью на ярлыке файла, просто добавьте вызов встроенной функ
    ции raw_input в самом конце сценария. Например:
    # Комментарий import sys print sys.platform print 2 ** 100
    raw_input() # Добавленная строка
    Вообще, функция raw_input считывает следующую строку с устройства стандартного ввода, ожидая ее, если она еще недоступна. В результате в данном случае сценарий приостанавливается, благодаря чему окно остается на экране, пока не будет нажата клавиша
    Enter, как показано на рис. 3.2.
    Теперь, когда я продемонстрировал этот трюк, вы должны иметь в ви
    ду, что прибегать к нему требуется только в операционной системе
    Windows, и только если сценарий выводит какиелибо сообщения,
    и только если сценарий запускается щелчком мыши на ярлыке. Вызов функции следует добавлять в самый конец файлов верхнего уровня и только при выполнении всех трех перечисленных условий. Во всех остальных случаях нет смысла добавлять этот вызов.
    1 1
    Кроме того, существует возможность полностью подавить появление окна консоли DOS при запуске файлов щелчком мыши в Windows. Программы,
    имена файлов которых имеют расширение .pyw, отображают только те ок
    на, которые создаются самими сценариями, – окно консоли DOS при запус
    ке таких файлов не открывается. Файлы с расширением .pyw – это обычные файлы .py с исходными текстами, которые в операционной системе Win
    dows обслуживаются специальным образом. Главным образом они исполь
    зуются для сценариев Python, которые сами создают окна пользователь
    ского интерфейса, что часто сочетается с организацией вывода в файлы ре
    зультатов работы и сообщений об ошибках.
    1   ...   7   8   9   10   11   12   13   14   ...   98


    написать администратору сайта