Код, написанный на языке Python, может храниться в редакторе кода, IDE или файле. И он не будет работать, если не знать, как его правильно запускать.
В этом материале рассмотрим 7 способов запуска кода, написанного на Python. Они будут работать вне зависимости от операционной системы, среды Python или местоположения кода.
Python-код можно запустить одним из следующих способов:
- С помощью командной строки операционной системы (shell или терминал);
- С помощью конкретной версии Python или Anaconda;
- Использовать Crontab;
- Запустить код с помощью другого Python-скрипта;
- С помощью файлового менеджера;
- Использовать интерактивный режим Python;
- Использовать IDE или редактор кода.
Запуск Python-кода интерактивно
Для запуска интерактивной сессии нужно просто открыть терминал или командную строку и ввести python
(или python3
в зависимости от версии). После нажатия Enter запустится интерактивный режим.
Вот как запустить интерактивный режим в разных ОС.
Интерактивный режим в Linux
Откройте терминал. Он должен выглядеть приблизительно вот так :
После нажатия Enter будет запущен интерактивный режим Python.
Интерактивный режим в macOS
На устройствах с macOS все работает похожим образом. Изображение ниже демонстрирует интерактивный режим в этой ОС.
Интерактивный режим в Windows
В Windows нужно открыть командную строку и ввести python
. После нажатия Enter появится приблизительно следующее:
Запуск Python-скриптов в интерактивном режиме
В таком режиме можно писать код и исполнять его, чтобы получить желаемый результат или отчет об ошибке. Возьмем в качестве примера следующий цикл.
Этот код должен выводить целые числа от 0 до 5. В данном случае вывод — все, что появилось после print(i)
.
Для выхода из интерактивного режима нужно написать следующее:
И нажать Enter. Вы вернетесь в терминал, из которого и начинали.
Есть и другие способы остановки работы с интерактивным режимом Python. В Linux нужно нажать Ctrl + D, а в Windows — Ctrl + Z + Enter.
Стоит отметить, что при использовании этого режима Python-скрипты не сохраняются в локальный файл.
Как выполняются Python-скрипты?
Отличный способ представить, что происходит при выполнении Python-скрипта, — использовать диаграмму ниже. Этот блок представляет собой скрипт (или функцию) Python, а каждый внутренний блок — строка кода.
Первая строка (кода):
Вторая = строка кода
Третья строка > кода:
Четвертая (строка == кода)
Пятая строка кода
При запуске скрипта интерпретатор Python проходит сверху вниз, выполняя каждую из них. Именно таким образом происходит выполнение кода.
Но и это еще не все.
Блок-схема выполнения кода интерпретатором
- Шаг 1: скрипт или .py-файл компилируется, и из него генерируются бинарные данные. Готовый файл имеет расширение .pyc или .pyo.
- Шаг 2: генерируется бинарный файл. Он читается интерпретатором для выполнения инструкций.
Это набор инструкций, которые приводят к финальному результату.
Иногда полезно изучать байткод. Если вы планируете стать опытным Python-программистом, то важно уметь понимать его для написания качественного кода.
Это также пригодится для принятия решений в процессе. Можно обратить внимание на отдельные факторы и понять, почему определенные функции/структуры данных работают быстрее остальных.
Как запускать Python-скрипты?
Для запуска Python-скрипта с помощью командной строки сначала нужно сохранить код в локальный файл.
Возьмем в качестве примера файл, который был сохранен как python_script.py. Сохранить его можно вот так:
- Создать Python-скрипт из командной строки и сохранить его,
- Создать Python-скрипт с помощью текстового редактора или IDE и сохранить его. Просто создайте файл, добавьте код и сохраните как «python_script.py»
Сохранить скрипт в текстовом редакторе достаточно легко. Процесс ничем не отличается от сохранения простого текстового файла.
Но если использовать командную строку, то здесь нужны дополнительные шаги. Во-первых, в самом терминале нужно перейти в директорию, где должен быть сохранен файл. Оказавшись в нужной папке, следует выполнить следующую команду (на linux):
sudo nano python_script.py
После нажатия Enter откроется интерфейс командной строки, который выглядит приблизительно следующим образом:
Теперь можно писать код и с легкостью сохранять его прямо в командной строке.
Как запускать скрипт в командной строке?
Скрипты можно запустить и с помощью команды Python прямо в интерфейсе терминала. Для этого нужно убедиться, что вы указали путь до него или находитесь в той же папке. Для выполнения скрипта (python_script.py) откройте командную строку и напишите python3 python_script.py
.
Замените python3
на python
, если хотите использовать версию Python2.x.
Вот что будет храниться в самом файле python_script.py:
for i in range(0,5):
print(i)
Вывод в командной строке будет следующим:
~$ python python_script.py
0
1
2
3
4
Предположим, что нужно сохранить вывод этого года (0, 1, 2, 3, 4). Для этого можно использовать оператор pipe
.
Это делается вот так:
python python_script.py > newfile.txt
После этого будет создан файл «newfile.txt» с сохраненным выводом.
Как выполнять код интерактивно
Есть больше 4 способов запустить Python-скрипт интерактивно. Рассмотрим их все подробно.
Использование import для запуска скриптов
Импорт модулей для загрузки скриптов и библиотек используется постоянно. Можно даже написать собственный скрипт (например code1.py) и импортировать его в другой файл без необходимости повторять то же самое.
Вот как нужно импортировать code1.py в новом скрипте.
Но таким образом импортируется все содержимое файла code1.py. Это не проблема до тех пор, пока не появляется необходимость, в том, чтобы код был оптимизирован и быстро работал.
Предположим, что внутри файла есть маленькая функция, например chart_code1()
, которая рисует красивый график. И нужна только она. Вместо того чтобы взывать весь скрипт целиком, можно вызвать ее.
Вот как это обычно делается.
>>> from code1 import chart_code1
Теперь появляется возможность использовать chart_code1
в новом файле так, будто бы эта функция была написана здесь.
Использование importlib для запуска кода
import_module()
из importlib позволяет импортировать и исполнять другие Python-скрипты.
Это работает очень просто. Для скрипта code1.py нужно сделать следующее:
import importlib
import.import_module('code1')
И нет необходимости добавлять .py в import_module()
.
Разберем случай, когда есть сложная структура папок, и нужно использовать importlib. Предположим, что структура следующая:
level1 | +– __init__.py – level2 | +– __init__.py – level3.py
В таком случае, написав, например, importlib.import_module("level3")
, вы получите ошибку. Это называется относительным импортом и работает за счет явного использования относительного пути.
Так, для запуска скрипта level3.py можно написать так:
importlib.import_module('.level3', 'level1.level')
# или так
importlib.import_module('level1.level2.level3')
Запуск кода с помощью runpy
Модуль runpy
ищет и исполняет Python-скрипт без импорта. Он также легко используется, ведь достаточно просто вызывать имя модуля в run_module()
.
Вот как, например, выполнить code1.py с помощью runpy.
>>> import runpy
>>> runpy.run_module(mod_name="code1")
Запуск кода динамически
Рассмотрим функцию exec()
, которая также используется для динамического выполнения скриптов. В Python2 эта функция была инструкцией.
Вот как она помогает выполнять код динамически на примере строки.
>>> print_the_string = 'print("Выполнен динамический код")'
>>> exec(print_the_string)
Однако этот способ уже устарел. Он медленный и непредсказуемый, а Python предлагает массу других вариантов.
Запуск скриптов Python из текстового редактора
Для запуска кода с помощью текстового редактора можно использовать команду по умолчанию (run) или горячие клавиши (Function + F5 или просто F5 в зависимости от ОС).
Вот пример того, как код выполняется в IDLE.
Но стоит обратить внимание на то, что в данном случае нет контроля над виртуальной средой, как это бывает при исполнении с помощью интерфейса командной строки.
Поэтому IDE и продвинутые редакторы текста куда лучше базовых редакторов.
Запуск кода из IDE
IDE можно использовать не только для запуска Python-кода, но также для выбора среды и отладки.
Интерфейс этих программ может отличаться, но список возможностей должен совпадать: сохранение, запуск и редактирование кода.
Запуск кода из файлового менеджера
Что если бы был способ запустить Python-скрипт двойным кликом по файлу с ним. Это можно сделать, создав исполняемый файл. Например, в случае с Windows для этого достаточно создать файл с расширением .exe и запустить его двойным кликом.
Как запустить Python-скрипт из другого кода
Хотя об этом явно не говорилось, можно прийти к выводу, что в случае с Python есть возможность:
- Запустить скрипт в командной строке, и этот скрипт будет вызывать другой код;
- Использовать модуль для загрузки другого скрипта.
Основные моменты
- Python-код можно писать в интерактивном и не-интерактивном режимах. При выходе из интерактивного режима вы теряете данные. Поэтому лучше использовать
sudo nano your_python_filename.py
. - Код можно запускать с помощью IDE, редактора кода или командной строки.
- Есть разные способы импорта кода и использования его из другого скрипта. Выбирайте вдумчиво, рассматривая все преимущества и недостатки.
- Python читает написанный код, транслирует его в байткод, который затем используется как инструкция — все это происходит при запуске скрипта. Поэтому важно учиться использовать байткод для оптимизации Python-кода.
Директор компании Seoquick автор многочисленных статей и публикаций. Сфера интересов: контекстная реклама, продвижение, поисковая оптимизация и OutReach. Ведет YouTube-канал, снимает видео как для новичков, так и для опытных SЕО- специалистов.
Начинающий разработчик на Python, помимо синтаксиса и основных правил использования операторов этого языка, должен уметь запускать код на исполнение. Ведь только так можно понять, работает ли написанный вами скрипт, или в нем содержатся ошибки. Рассмотрим подробнее, как можно запустить скрипты в терминале операционной системы, в интегрированной среде разработки или просто из интерфейса ОС. Это позволит вам выбрать подходящий вариант и повысить эффективность своей работы.
Интерпретатор Python
Рассматриваемый язык программирования является одним из самых прогрессивных на текущий момент. Он позволяет быстро и эффективно решать задачи в самых разных областях. Однако под термином Python понимают также интерпретатор, то есть программу на компьютере, которая позволяет запускать на исполнение написанные скрипты. Она представляет собой дополнительный программный слой между аппаратным обеспечением ПК и кодом.
Существует несколько интерпретаторов:
- написанные на языке программирования С;
- написанные на языке программирования Java;
- написанные на языке Python;
- программы, реализованные в среде .NET.
Выбор конкретного варианта для конечного пользователя значения не имеет. Независимо от вида программы, написанный код будет выполняться именно так, как предусмотрено правилами этого языка.
Запуск возможен двумя способами: как готовая к использованию программная последовательность (скрипт или модуль) или как отдельные куски кода, которые вводятся прямо в окно программы.
Интерактивный запуск кода
Для тестирования отдельных команд можно использовать интерпретатор в режиме интерактивного сеанса. Для этого необходимо открыть командную строку операционной системы и ввести команду, которая запускает интерпретатор.
Для ОС Linux это будет выглядеть следующим образом:
$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Теперь можно вводить команды, которые будут выполняться сразу после этого. Минус подобного подхода в том, что вся введенная последовательность не сохраняется после закрытия текущей сессии.
Интерактивное исполнение кода необходимо для того, чтобы немедленно протестировать фрагмент написанного кода. Кроме того, его можно использовать в процессе обучения для проверки действий тех или иных операторов «на лету». Этот способ интерпретации команд позволяет попробовать нужные вам функции языка, не прибегая к написанию отдельных скриптов для этого.
Выйти из интерактивного режима можно с помощью команды quit(), или просто закрыв окно терминала в Windows.
Для открытия терминала или командной строки перед запуском самого интерпретатора необходимо:
- В Windows нажать комбинацию клавиш «Флажок» + «R», после чего ввести команду cmd и нажать на кнопку «ОК» в диалоговом окне.
- В Linux или других подобных операционных системах доступ к командной строке предоставляется с помощью дополнительной программы. Можно использовать xterm или Konsole.
- В macOS для получения доступа к терминалу необходимо выбрать меню «Приложения», после чего перейти в раздел «Утилиты» и кликнуть на элементе «Терминал».
Как работает интерпретатор Python для скриптов
Запуск на исполнение написанных скриптов или модулей производится в пакетном режиме. И выполняется по сложной схеме, которая состоит из следующих этапов:
- Последовательная обработка всех операторов, которые записаны в скрипте.
- Компиляция исходного хода в промежуточный формат. Интерпретатор создает байт-код, который представляет собой язык программирования низкого уровня, независимый от платформы и операционной системы. Байт-код необходим для оптимизации процесса выполнения скрипта.
- Исполнение полученного кода. На этом этапе вступает в действие виртуальная машина Python (PVM), которая циклично перебирает каждый оператор из скрипта и запускает его на исполнение. Как будто вы вводите каждую команду последовательно в интерактивном интерпретаторе.
Запуск скриптов в командной строке
В интерактивном режиме, который обсуждался выше, можно записывать и выполнять любое количество строк кода. Но после закрытия окна терминала они не сохраняются. Поэтому реальные программы на Python пишутся в виде скриптов и представляют собой обычные текстовые файлы. Чтобы избежать путаницы при их хранении, им присваиваются расширения .py или .piw.
Создавать текстовый файл можно с помощью любого редактора, в том числе Notepad. Однако лучше использовать более продвинутые решения, например Sublime Text. Для примера возьмем наиболее простой скрипт, с которого начинается знакомство с любым языком программирования.
#!/usr/bin/env python3
print('Hello World!')
Файл можно сохранить в вашем рабочем каталоге с любым именем и расширением .py.
Чтобы запустить скрипт на исполнение, нужно использовать интерпретатор языка программирования и в качестве дополнительного параметра указать имя созданного вами файла.
$ python3 hello.py
Hello World!
В приведенном выше примере файл был назван «hello.py». После ввода команды нужно нажать клавишу «Ввод», и на экране появится результат работы скрипта. То есть надпись «Привет, Мир» или классическое английское «Hello World»!
Если файл с программой сохранен не в каталоге с интерпретатором, нужно указывать путь к нему.
Переназначение устройства вывода информации
При исполнении программного кода на Python иногда необходимо сохранять результаты, которые отображает на экране программа. Они в дальнейшем анализируются для поиска ошибок или других целей. В этом случае скрипт необходимо запускать следующей командой:
$ python3 hello.py > output.txt
По результатам работы скрипта создается файл с именем output.txt, в который сохраняется все то, что должно было появиться на экране во время работы в программе. Это стандартный синтаксис, предусмотренный операционной системой.
Если файла с заданным именем не существует, ОС создает его автоматически. Если существует – данные в нем перезаписываются без сохранения предыдущих. В случае, когда есть необходимость в добавлении данных в конец текстового файла, вместо одного значка > необходимо указать два >>.
Прокачать навык программирования на Python и найти работу Junior Python разработчика помогут наши менторы
Выбрать ментора
Запуск из командной строки без интерпретатора
В последних версиях операционной системы Windows добавлена возможность запускать скрипты на Python без ввода в командной строке названия программы-интерпретатора. То есть необходимо просто написать название файла с расширением.
C:\devspace> hello.py
Hello World!
Обусловлено это тем, что при клике на файле или запуске его из командной строки операционная система автоматически ищет связанное приложение и запускает его. Точно так же вы открываете файлы Word, просто кликнув на них курсором мыши.
В Unix таким образом тоже можно запускать скрипты. Однако для этого в первую строку текстового файла с командами необходимо добавить текст #!/Usr/bin/env python. Он указывает на программу, с помощью которой производится запуск. А интерпретатор языка программирования расценивает строку как комментарий и пропускает её.
Запуск скриптов из интерактивного режима
Находясь в интерактивном режиме (описан в первом разделе), пользователь может загрузить файл с написанной ранее последовательностью команд и запустить его на исполнение. Такой способ можно применять, когда модуль содержит вызовы функций, методов или других операторов, генерирующих текст на экране. В противном случае видимых результатов работы программы не будет.
Запустить скрипт из интерактивного режима можно командой:
>>> import hello
Hello World!
Обратите внимание, что эта команда срабатывает один раз за интерактивный сеанс. Поэтому, если внести изменения в файл со скриптом и перезапустить его этой командой, ничего не произойдет.
Заключение
Теперь вы знаете, что команды и скрипты Python можно запускать разными способами и в разных режимах. Это позволит вам выбрать нужный вариант для решения конкретной задачи, увеличить скорость своей работы, сделать ее продуктивной и гибкой.
Каждый разработчик на Python должен знать, как запускать скрипты, потому что это единственный способ проверить работоспособность написанного кода. Чтобы запустить скрипт, программист может использовать:
- Командную строку (терминал).
- Интерактивный режим Python.
- Текстовый редактор или полноценную IDE.
- Менеджер файлов операционной системы (запуск через графический интерфейс).
Каждый способ имеет свои особенности, поэтому его выбор зависит не только от предпочтений или привычек, но и от того, в какой степени программист хочет контролировать параметры запуска скрипта.
Не нужно путать скрипты и модули, хотя различия между ними не велики. Скрипты — это файлы с исполняемым кодом, а модули — файлы, код которых импортируется в скрипты, проще говоря, библиотеки.
Интерпретатор и его установка
Интерпретатор — это программное обеспечение, которое позволяет запускать скрипты Python. С технической точки зрения интерпретатор является связующим слоем между кодом на Python и машинным кодом.
Интерпретатор используется каждый раз, когда программист запускает код: в интерактивном режиме, через командную строку, всегда.
Установить интерпретатор на Windows не сложно, достаточно найти Python в Microsoft Store и установить.
Если же у вас старая версия Windows и предыдущий вариант не работает, то надо зайти на официальный сайт Python, скачать и запустить установочный файл и следовать инструкциям по установке. Не забудьте при установке выставить галку, чтобы Python был добавлен в Windows PATH.
В Linux обычно ничего устанавливать не требуется, так как Pyton включают в его дистрибутив.
Интерактивный запуск кода Python
Для работы с маленькими кусками кода программисты часто используют режим интерактивного сеанса. В этом режиме введенный код на Python сразу интерпретируется и исполняется. То есть не нужно создавать файл и запускать его.
Чтобы войти в интерактивный режим в Windows, можно использовать один из нескольких способов:
- Из меню пуск запустите командную строку «cmd». Затем выполните в ней команду «python». После этого должная отобразиться версия интерпретатора, дата, время и другая информация. Также должны появится несколько символов «>», которые показывают, что можно вводить команды.
- Нажмите сочетание клавиш <Win>+<R>, откроется окно «Выполнить». Введите «python». Должна открыться командная строка с запущенным интерактивным сеансом. В ней также должна быть отображена информация о версии, дате и времени, а также символы «>».
- Возможность работы в интерактивном сеансе также встроена в IDLE. Её можно запустить из меню пуск, набрав в поиске «IDLE» и кликнув по найденному значку. После этого сразу откроется интерактивный сеанс. Преимуществом использования IDLE является подсветка синтаксиса.
Чтобы запустить интерактивный сеанс в Linux, необходимо выполнить в терминале команду «python3» или «python2».
Для выхода из интерактивного режима используются комбинации клавиш: <Ctrl>+<Z> и после этого нажмите <Enter>. Или можно просто прописать в командной строке quit() или exit().
Работать в интерактивном режиме в IDLE можно не только в Windows, но и в Linux, однако в этом нет смысла, потому что терминал Linux достаточно удобен и предоставляет все необходимые инструменты, в отличии от командной строки Windows.
Примеры работы в интерактивном сеансе
Интерактивный сеанс является необходимым и важным инструментом. С его помощью программист может быстро проверить код, в работе которого он не уверен.
Код исполняется сразу после ввода, однако это не значит, что в терминале можно использовать только однострочные операции, например:
>>> a = 2 >>> b = 3 >>> a + b 5 >>> 2 + 3 5 >>> quit()
Обратите внимание, что для вывода результата выражения в терминал в интерактивном сеансе не нужно использовать функцию print().
В командной строке также можно писать функции, циклы, условия. Кроме того, в интерактивном сеансе можно импортировать модули.
Командная строка автоматически определяет, когда нужно написать многострочную инструкцию, например, если программист хочет объявить функцию, он пишет:
>>> def a(): ... for x in range(5): ... print(x, end = " ") ... >>>
«>>>» — это просто отображаемый в командной строке символ, свидетельствующий о возможности ввода. Многоточие показывает, что ввод не закончен, тем самым разрешая программисту писать сложные конструкции в несколько строк.
Не забудьте после того как отобразилось «…» ввести нужное количество пробелов после него! Для выхода из этого режима нажимаем ещё один .
Следующая команда вызывает только что созданную функцию:
>>> a() 0 1 2 3 4 >>>
Индикаторы ввода остались на этой же строке, потому что мы установили разделитесь функции print с помощью аргумента end = " "
.
Запуск скрипта Python через командную строку
Интерактивный сеанс позволяет тестировать код, но как только он завершится, весь код потеряется.
Поэтому большая часть кода пишется с использованием текстовых файлов, которые имеют расширение «.py». Они могут быть созданы с помощью любого текстового редактора, подойдет даже обычный блокнот.
Предположим, что наш скрипт выводит на экран надпись «Hello World!», то есть код будет следующим:
print("Hello World!")
Запишем его в файл world.py. Запустить его через командную строку можно несколькими способами.
Команда «python» и запуск по имени
Самый простой и практичный запуск скриптов — использовать команду «python». Нужно открыть командную строку и написать «python имя_скрипта». Важно, чтобы скрипт находился либо в директории, из которой запущена командная строка, либо в каталоге, прописанном в переменной среды PATH. Тогда запуск пройдет успешно:
D:\python>python world.py Hello World!
Если на компьютере установлены две версии Python, (а на Linux обычно так и есть) следует использовать команды «python3» и «python2» для вызова соответствующей версии.
В последних версиях Windows можно запустить скрипт Python просто введя его имя:
D:\python>world.py
В этом случае запустится новая консоль, выведется в неё сообщение и закроется. Мы ничего не успеем увидеть. Чтобы этого не было, можно в конец файла добавить input(), чтобы скрипт ожидал ввода пользователя.
Такой запуск возможен благодаря тому, что Windows автоматически определяет, какую программу (в данном случае интерпретатор Python) использовать для запуска файла.
В Linux также можно воспользоваться этим способом, но в начале скрипта Python в первой строке должен быть указан полный путь к интерпретатору:
#!/usr/bin/python3
или
#!/usr/bin/env python3
После этого нужно разрешить запуск файла (сделать его исполняемым).
chmod u+x world.py
Теперь достаточно просто запустить скрипт, введя в терминал его имя, перед которым добавить «./»:
./world.py Hello World!
Запуск модуля
Иногда возникает необходимость запустить модуль, как скрипт. Однако при использовании обычного способа командная строка выдает предупреждение о том, что файл нельзя открыть.
Чтобы запустить модуль, как исполняемый файл, нужно воспользоваться командой:
D:\python>python -m world.py Hello World!
Перенаправление вывода
Если результаты выполнения скрипта нужно где-то сохранить, чтобы использовать их в последующих операциях, программист может перенаправить вывод из консоли в, например, файл. Для этого используется оператор «>». Вернём содержимое нашего файла world.py в изначальный вариант:
print("Hello World!")
Теперь запустим. Полная команда выглядит так:
D:\python>python world.py > output.txt
Здесь output.txt – это текстовый файл, в который записывается результат выполнения скрипта.
Операция может использоваться как в операционной системе Windows, так и в Unix-подобных системах. Если файла, в который должен вывестись результат, не существует, система создаст его автоматически.
При использовании оператора «>» содержимое файла, в который выводятся данные, полностью перезаписывается. Если уже имеющиеся данные нужно сохранить, используют оператор «>>».
Например, у нас уже есть файл output.txt со строкой приветствия (после того как мы его создали предыдущей командой). Теперь допишем в него ещё одну строку:
D:\python>python world.py >> output.txt
Таким образом можно последовательно запустить несколько раз этот скрипт и в файл будут дописываться всё новые строки приветствия.
Использование IDLE
IDLE – это официальная интегрированная среда разработки, поставляемая вместе с интерпретатором Python.
Она позволяет работать в интерактивном режиме, писать и запускать скрипты. Кроме того, IDLE поддерживает подсветку синтаксиса и отладку.
Работа в интерактивном режиме не отличается от того, что было описано для командной строки Windows и терминала Linux. Программист пишет код, который сразу исполняется интерпретатором.
Запуск скрипта
Чтобы запустить скрипт в IDLE, сначала нужно открыть его с помощью «File – Open» или с помощью клавиш <Ctrl>+<O>. Затем его необходимо запустить с помощью «Run – Run Module» или с помощью клавиши <F5>.
При запуске скрипта можно указать пользовательский параметры, для этого используйте «Run – Run… Customized» или комбинация клавиш <Shift>+<F5>. В поле «Command Line Arguments for sys.argv» прописываются нужные аргументы.
Запуск скрипта из интерактивного режима
Иногда при работе в интерактивном режиме возникает необходимость проверить код какого-либо скрипта. Не обязательно использовать терминал или отдельно открывать скрипт в IDLE, его можно запустить прямо из интерактивного сеанса различными способами.
import
При импорте модуля в скрипт выполняется весь содержащийся в нём код. Если модуль содержит только объявления функций и классов и присвоение значений, программист ничего не увидит. Но если модуль выводит что-то на экран, работает с файлами, то это отобразится при импорте.
Таким образом можно импортировать модуль в интерактивном режиме, чтобы увидеть результаты его выполнения, однако сделать это можно только один раз, потому что при последующих импортах в пределах одного сеанса ничего не произойдет, так как при каждом новом импорте интерпретатор обращается к модулю, записанному в кэш, а не к реальному файлу.
Здесь импортировал библиотеку sys для того чтобы в пути прописать полный путь до моего модуля. Видно, что приветствие отображается только после первой попытки импорта моего модуля.
exec()
Оператор exec() сначала читает содержимое модуля, затем отправляет его в функцию, которая выполняет код.
Синтаксис выглядит так:
>>> exec(open('D:\\python\\world.py').read())
Запуск скриптов из текстового редактора или IDE
Если программист работает над крупным проектом, ему не достаточно стандартной IDLE и блокнота. В этом случае используется либо текстовый редактор, либо полноценная среда разработки IDE.
Для большинства текстовых редакторов разработаны плагины, позволяющие запускать скрипты Python одним кликом мыши. Сейчас очень популярен текстовый редактор VS Code. Вот здесь можно описано как с ним работать.
Большинство IDE поддерживают запуск скриптов по умолчанию. Обычно это делается с помощью встроенной в панель инструментов кнопки «Запуск/отладка». Эту функцию поддерживают такие IDE, как Eclipse, PyCharm, Eric, NetBeans и другие.
Запуск скриптов через менеджер файлов
В любой операционной системе с графическим интерфейсом можно запустить скрипт Python двойным кликом по файлу. Однако здесь есть свои нюансы, во-первых, система должна связывать расширение «.py» с интерпретатором Python, во-вторых, такой способ ограничивает программиста, не позволяя указать дополнительные параметры.
Этот способ можно использовать не только в Windows, но и Unix-подобных системах. Однако после запуска окно консоли будет сразу закрываться. Чтобы решить эту проблему, в конце скрипта добавляется оператор input(), таким образом консоль не закроется, пока не получит ввод от пользователя.
Ещё одной проблемой является невозможность обнаружения и отладки ошибок. Даже если программист добавил оператор input(), при возникновении ошибки в процессе выполнения скрипта консоль закроется.
Это самый ненадёжный способ, который накладывает на программиста много ограничений. Лучше отказаться от идеи пользоваться файловым менеджером во время отладки скриптов и вернуться к стандартным способам запуска через командную строку.
Здарова, щеглы, сегодня мы своими руками будем писать скрипт на Python. Нам понадобятся: интерпретатор Python 3 под «какая-там-у-вас-ОС», текстовый редактор с подсветкой синтаксиса, например, Sublime Text, Google, упаковка прамирацетама, бутылка минеральной воды и 60 минут свободного времени.
Перед тем как писать скрипт, мы должны определиться, что он вообще будет делать. Делать он будет следующее: получив на вход домен и диапазон IP-адресов, многопоточно проходить список этих адресов, совершать HTTP-запрос к каждому, в попытках понять, на каком же из них размещен искомый домен. Зачем это нужно? Бывают ситуации, когда IP-адрес домена закрыт Cloudflare, или Stormwall, или Incapsula, или еще чем-нибудь, WHOIS история не выдает ничего интересного, в DNS-записях такая же канитель, а, внезапно, один из поддоменов ресолвится в адрес из некоторой подсети, которая не принадлежит сервису защиты. И в этот момент нам становится интересно, вдруг и основной домен размещен в той же самой подсети.
Погнали, сразу выпиваем половину бутылки воды, и пишем следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
import argparse import logging import coloredlogs import ssl import concurrent.futures import urllib.request from netaddr import IPNetwork from collections import deque VERSION = 0.1 def setup_args(): parser = argparse.ArgumentParser( description = ‘Domain Seeker v’ + str(VERSION) + ‘ (c) Kaimi (kaimi.io)’, epilog = », formatter_class = argparse.ArgumentDefaultsHelpFormatter ) parser.add_argument( ‘-d’, ‘—domains’, help = ‘Domain list to discover’, type = str, required = True ) parser.add_argument( ‘-i’, ‘—ips’, help = ‘IP list (ranges) to scan for domains’, type = str, required = True ) parser.add_argument( ‘—https’, help = ‘Check HTTPS in addition to HTTP’, action = ‘store_true’ ) parser.add_argument( ‘—codes’, help = ‘HTTP-codes list that will be considered as good’, type = str, default = ‘200,301,302,401,403’ ) parser.add_argument( ‘—separator’, help = ‘IP/Domain/HTTP-codes list separator’, type = str, default = ‘,’ ) parser.add_argument( ‘—include’, help = ‘Show results containing provided string’, type = str ) parser.add_argument( ‘—exclude’, help = ‘Hide results containing provided string’, type = str ) parser.add_argument( ‘—agent’, help = ‘User-Agent value for HTTP-requests’, type = str, default = ‘Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1’ ) parser.add_argument( ‘—http-port’, help = ‘HTTP port’, type = int, default = 80 ) parser.add_argument( ‘—https-port’, help = ‘HTTPS port’, type = int, default = 443 ) parser.add_argument( ‘—timeout’, help = ‘HTTP-request timeout’, type = int, default = 5 ) parser.add_argument( ‘—threads’, help = ‘Number of threads’, type = int, default = 2 ) args = parser.parse_args() return args if __name__ == ‘__main__’: main() |
Ни одного комментария, какие-то import, непонятные аргументы командной строки и еще эти две последние строчки… Но будьте спокойны, все нормально, это я вам как мастер программирования на Python с 30-минутным стажем говорю. Тем более, как известно, Google не врет, а официальная документация по Python — это вообще неоспоримая истина.
Так что же мы все-таки сделали в вышеописанном фрагменте кода? Мы подключили модули для работы с аргументами коммандной строки, модули для логирования (потокобезопасные между прочим!), модуль для работы с SSL (для одной мелочи, связанной с HTTPS-запросами), модуль для создания пула потоков, и, наконец, модули для совершения HTTP-запросов, работы с IP-адресами и двухсторонней очередью (по поводу различных типов импорта можно почитать здесь).
После этого мы, в соответствии с документацией по модулю argparse, создали вспомогательную функцию, которая будет обрабатывать аргументы, переданные скрипту при запуске из командной строки. Как видите, в скрипте будет предусмотрена работа со списком доменов/IP-диапазонов, а также возможность фильтрации результатов по ключевым словам и по кодам состояния HTTP и еще пара мелочей, как, например, смена User-Agent и опциональная проверка HTTPS-версии искомого ресурса. Последние две строки в основном используются для разделения кода, который будет выполнен при запуске самого скрипта и при импортировании в другой скрипт. В общем тут все сложно, все так пишут. Мы тоже так будем писать. Можно было бы немного модифицировать этот код, например, добавив возврат разных статусов системе в зависимости от того, как отработала функция main, добавить argv в качестве аргумента, и так далее, но мы изучаем Python только 10 минут и ленимся вчитываться в документацию.
Делаем перерыв и выпиваем глоток освежающей минеральной воды.
Поехали дальше.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
def main(): # Обрабатываем аргументы и инициализируем логирование # с блекджеком и цветными записями args = setup_args() coloredlogs.install() # Сообщаем бесполезную информацию, а также запускаем цикл проверки logging.info(«Starting…») try: check_loop(args) except Exception as exception: logging.error(exception) logging.info(«Finished») def check_loop(args): # Создаем пул потоков, еще немного обрабатываем переданные аргументы # и формируем очередь заданий with concurrent.futures.ThreadPoolExecutor(max_workers = args.threads) as pool: domains = args.domains.split(args.separator) ips = args.ips.split(args.separator) codes = args.codes.split(args.separator) tasks = deque([]) for entry in ips: ip_list = IPNetwork(entry) for ip in ip_list: for domain in domains: tasks.append( pool.submit( check_ip, domain, ip, args, codes ) ) # Обрабатываем результаты и выводим найденные пары домен-IP for task in concurrent.futures.as_completed(tasks): try: result = task.result() except Exception as exception: logging.error(exception) else: if result != None: data = str(result[0]) if( ( args.exclude == None and args.include == None ) or ( args.exclude and args.exclude not in data ) or ( args.include and args.include in data ) ): logging.critical(«[+] « + args.separator.join(result[1:])) |
В коде появился минимум комментариев. Это прогресс. Надо войти в кураж (не зря мы заготовили прамирацетам) и дописать одну единственную функцию, которая будет осуществлять, непосредственно, проверку. Ее имя уже упомянуто в коде выше: check_ip.
30 минут спустя
Хорошо-то как. Не зря я говорил, что понадобится час времени. Продолжим.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
def check_ip(domain, ip, args, codes): # Преобразуем IP из числа в строку # Магическая code-flow переменная для совершения двух проверок # И бесполезное логирование ip = str(ip) check_https = False logging.info(«Checking « + args.separator.join([ip, domain])) while True: # Задаем порт и схему для запроса в зависимости от магической переменной schema = ‘https://’ if check_https else ‘http://’; port = str(args.https_port) if check_https else str(args.http_port) request = urllib.request.Request( schema + ip + ‘:’ + port + ‘/’, data = None, headers = { ‘User-Agent’: args.agent, ‘Host’: domain } ) # Совершаем запрос, и если получаем удовлетворительный код состояни HTTP, # то возвращаем содержимое ответа сервера, а также домен и IP try: response = urllib.request.urlopen( request, data = None, timeout = args.timeout, context = ssl._create_unverified_context() ) data = response.read() return [data, ip, domain] except urllib.error.HTTPError as exception: if str(exception.code) in codes: data = exception.fp.read() return [data, ip, domain] except Exception: pass if args.https and not check_https: check_https = True continue return None |
В общем-то весь наш скрипт готов. Приступаем к тестированию.
Неожиданно узнаем, что у блога есть альтернативный IP-адрес. И действительно:
curl —i ‘http://188.226.181.47/’ —header ‘Host: kaimi.io’ |
HTTP/1.1 301 Moved Permanently Server: nginx/1.4.6 (Ubuntu) Date: Sun, 02 Oct 2016 13:52:43 GMT Content—Type: text/html Content—Length: 193 Connection: keep—alive Location: https://kaimi.io/ <html> <head><title>301 Moved Permanently</title></head> <body bgcolor=«white»> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx/1.4.6 (Ubuntu)</center> </body> </html> |
Однако:
curl —i ‘https://188.226.181.47/’ —header ‘Host: kaimi.io’ |
curl: (51) SSL: certificate subject name (*.polygraph.io) does not match target host name ‘188.226.181.47’ |
Какой-то левый хост обрабатывает запросы. Почему? Потому что это прокси, который реагирует на содержимое заголовка Host. В общем скрипт готов, по крайней мере альфа-версия скрипта. Если вам понравилось — подписывайтесь, ставьте лайки, шлите pull-реквесты на github.
A crucial operation you need to be aware of when programming is to run a Python script.
Although this seems like a simple operation, most beginners often face difficulty when running scripts.
In this article, we will guide you through the process of running scripts in Python using different methods and environments.
To run a Python script, you must:
- Open a Terminal or Command Prompt Window
- Navigate to the directory where your Python script (.py file) is located using the ‘cd’ command
- Execute your script by typing ‘python’ followed by the name of your script
There are multiple ways to run a script, and by the end of this article, you’ll have a solid understanding of how to run Python scripts in different environments and operating systems.
Understanding each method can improve your programming experience and help you adapt to different scenarios.
Let’s get into it!
6 Methods to Run a Python Script
In this section, we will cover 6 ways of running a Python Script.
Specifically, we will go over the following:
- Running a Python Script From Command Line
- Running a Python Script From Python Interactive Shell
- Running a Python Script in IDE
- Running a Python Script in IDLE
- Running a Python Script Using Import
- Running a Python Script Using runpy.run_module() And runpy.run_path()
1) How to Run a Python Script From Command Line
The process of running a Python script from the command line is quite similar across different operating systems.
In this section, we will look at how you can:
- Run Python scripts from the command line on Windows
- Run Python scripts from the command line on Linux and MacOS
1) How to Run Python Scripts From The Command Line on Windows
You can use the following steps to run a Python program from the command line on Windows:
Step 1: Open the Command Line Interface. You can do this by searching for cmd in the start menu or by pressing Win+R, typing cmd, and then hitting Enter.
Step 2: Navigate to the directory containing your Python script using the cd command.
For example, if your script is in a directory on your local drive E in a folder named “PythonScripts”, you would type cd E\PythonScripts.
Step 3: Run the script by typing python script.py (replace script.py with the name of your script), and press Enter.
2) How to Run Python Scripts From The Command Line on Linux And MacOS
Follow the steps listed below to run Python scripts from the command line on Linux and MacOS:
Step 1: Open the terminal.
Step 2: Navigate to the directory containing your Python script using the cd command.
For example, if your script is in a directory in your home folder named “PythonScripts”, you would type cd ~/PythonScripts.
Step 3: To run your script, type python3 script.py (replace script.py with the name of your script), and press Enter.
2) How to Run Python Script From Python Interactive Shell
The Python Interactive Shell, also known as the Python Interpreter, is an excellent tool for trying out small snippets of Python code and doing simple calculations, but it’s not the best tool for running large, complex scripts.
However, if you want to run a Python script from the Python Interactive Shell, you can do so using Python’s built-in execfile() function in Python 2, or using the exec() function with open() in Python 3.
Running a Python Script in Python 2
Follow the steps below to run a script from the Python interactive shell in Python 2:
Step 1: Open the Python Interactive session by typing python into your terminal or command prompt and hitting Enter.
Step 2: Type execfile(‘script.py’), replacing ‘script.py’ with the path to your script.
For example:
>>> execfile('C:/Users/username/Desktop/script.py')
Running a Python Script in Python 3
In Python 3, the execfile() function has been removed. Instead, you can use exec() with open() to achieve the same effect.
Follow the steps below to run a script in Python 3:
Step 1: Open the Python Interactive Shell by typing python3 (or python if Python 3 is your default Python) into your terminal or command prompt and hitting Enter.
Step 2: Type the following, replacing ‘script.py’ with the path to your script.
>>> exec(open('C:/Users/username/Desktop/script.py').read())
The output for the above execution will be:
3) How to Run a Python Script in IDE
You can run Python scripts in different Integrated development environments, and each has its own way of executing scripts.
For instance, if you’d like to run a Python script in VS Code, you can follow the steps given below:
Step 1: Launch Visual Studio Code, and open your Python file (File > Open File…).
If you haven’t created a Python file yet, create a new file (File > New File), and make sure to save it with a .py extension.
Step 2: Select a Python interpreter by clicking on the Python version in the bottom left of the status bar, or use the command palette (Ctrl+Shift+P) and search for “Python: Select Interpreter”.
This will show a list of available interpreters that VS Code can find automatically, including virtual environment interpreters.
Step 3: Once you have written your Python script and selected the Python interpreter, you can open a new terminal in VS Code to execute the script.
If you are using a Python virtual machine, you can use the same steps as discussed above after creating a virtual environment.
4) How to Run Python Script in Python’s IDLE
Python’s IDLE (Integrated Development and Learning Environment) is a simple IDE that comes with Python.
To run a Python script in IDLE, you can follow the steps given below:
Step 1: You can launch Python IDLE from your Start Menu (Windows), Applications folder (macOS), or application launcher (Linux).
Simply search for IDLE and click on the icon.
Step 2: Once IDLE is open, you can load your Python script into the IDLE text editor. Go to File > Open… in the menu bar.
Navigate to your Python script in the file dialog, select it, and click Open.
Step 3: After the script is loaded into the IDLE text editor, you can run it by going to Run > Run Module in the menu bar, or simply by pressing the F5 key.
Step 4: The output from your script will be displayed in the Python Shell window.
If your script includes input calls like input(), the shell will also provide a prompt for user input.
5) How to Run a Python Script Using Import
Running a Python script using import essentially involves treating the script as a module.
When you import the script, Python will execute it from top to bottom, just as if you’d run the script directly.
Suppose you have a Python script named myscript.py with the following content:
# myscript.py
def greet():
print("Hello from myscript!")
print("This will be printed upon import!")
You can run the script by importing it.
Open the Python shell by typing python or python3 (depending on your installation) in the terminal. Navigate to the directory containing myscript.py or make sure myscript.py is in a directory that’s part of your PYTHONPATH.
Import myscript with the following code:
>>> import myscript
The output of this execution will be:
6) How to Run a Python Script Using runpy.run_module() And runpy.run_path()
The runpy module in Python allows you to execute Python code dynamically.
It contains two main functions, run_module() and run_path(), which can be used to run Python scripts.
1) runpy.run_module()
The run_module() function allows you to execute a Python module without importing it.
It runs the module as if it was invoked from the command line using the -m option.
The following is an example of this method:
import runpy
# Run a standard library module as a script
# Equivalent of running "python -m http.server" from the command line
runpy.run_module(mod_name='http.server', run_name='__main__', alter_sys=True)
In this example, the http.server module from the Python standard library is being run, which will start a simple HTTP server.
2) runpy.run_path()
The run_path() function allows you to execute a Python script located at a specific path.
It reads and runs the Python file specified as the path.
The following is an example of run_path():
import runpy
# Run a script file as a standalone script
runpy.run_path('path_to_script.py', run_name='__main__')
In this example, replace ‘path_to_script.py’ with the actual path to your Python script.
This will execute the script just like running python path_to_script.py from the command line.
Supercharge your analytics game with Code Interpreter by watching the following video:
Final Thoughts
Mastering the various ways to run a Python script is an invaluable skill for any programmer. It allows you to test and execute your code across diverse platforms and environments.
By learning these techniques, you’ll find that you have more flexibility and control in your development process, whether it’s running scripts from the command line, an IDE, or even using Python’s own tools like import and runpy.
Each method discussed offers unique benefits, be it the simplicity of running scripts in an IDE, the powerful control provided by command-line execution, or the dynamic capabilities of the import statement and runpy.
Frequently Asked Questions
In this section, you will find some frequently asked questions you may have when running Python scripts.
How do I execute a Python script in terminal?
To execute a Python script in the terminal, simply type python followed by the file name, including the “.py” extension.
For example, to run a script called “script.py”, you would type:
python script.py
What is the command to run a Python script from the command line?
The command to run a Python script from the command line is the same as executing it in the terminal.
Use python followed by the file name with the “.py” extension.
For instance:
python script.py
How can I run a .py file in Windows?
To run a .py file in Windows, open the Command Prompt and navigate to the directory containing the .py file.
Then, use the command python followed by the file name with the “.py” extension.
For example:
python script.py
What are the steps to run a Python script in a specific folder?
To run a Python script in a specific folder, follow these steps:
- Open the terminal or command prompt.
- Navigate to the folder containing the .py file using the cd command. For example:
cd path/to/your/script-folder
- Run the Python script using the python command followed by the file name:
python script.py
How can I execute Python code in Visual Studio Code?
To execute Python code in Visual Studio Code, follow these steps:
- Open the Python file in Visual Studio Code.
- Ensure that the Python extension is installed and correctly configured.
- Click the “Run” button in the top-right corner, or right-click in the editor and select “Run Python File in Terminal”.
Is it possible to run a Python script in the background?
Yes, it is possible to run a Python script in the background. This can be achieved using various methods, such as appending an ampersand (&) to the command in Unix-like systems or using the start command in Windows.
For example:
- On Unix-like systems:
python script.py &
- On Windows:
start python script.py