Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как запустить файл python из командной строки


Python. Урок 2. Запуск программ на Python

В этом уроке мы рассмотрим два основных подхода к работе с интерпретатором Python – это непосредственная интерпретация строк кода, вводимых с клавиатуры в интерактивном режиме и выполенение файлов с исходным кодом в пакетном режиме. Также коснемся некоторых особенностей работы с Python в Linux и MS Windows.

Язык Python – это интерпретируемый язык. Это означает, что помимо непосредственно самой программы, вам необходим специальный инструмент для её запуска. Напомню, что существуют компилируемые и интерпретируемые языки программирования. В первом случае, программа с языка высокого уровня переводится в машинный код для конкретной платформы. В дальнейшем, среди пользователей, она, как правило, распространяется в виде бинарного файла. Для запуска такой программы не нужны дополнительные программные средства (за исключением необходимых библиотек, но эти тонкости выходят за рамки нашего обсуждения). Самыми распространенными языками такого типа являются C++ и C. Программы на интерпретируемых языках, выполняются интерпретатором и распоространяются в виде исходного кода. На сегодняшний день, среди интерпретируемых языков наиболее популярным является Python.

Если вы еще не установили интерпретатор Python, то самое время это сделать. Подробно об этом написано здесь.

Python может работать в двух режимах:

  • интерактивный;
  • пакетный.

В интерактивный режим можно войти, набрав в командной строке

> python

или

> python3

В результате Python запустится в интерактивном режиме и будет ожидать ввод команд пользователя.

Если же у вас есть файл с исходным кодом на Python, и вы его хотите запустить, то для этого нужно в командной строке вызвать интерпретатор Python и в качестве аргумента передать ваш файл. Например, для файла с именем test.py процедура запуска будет выглядеть так:

> python test.py

Интерактивный режим

Откройте Python в интерактивном режиме и наберите в нем следующее:

print("Hello, World!")

И нажмите ENTER.

В ответ на это интерпретатор выполнит данную строку и отобразит строкой ниже результат своей работы.

Python можно использовать как калькулятор для различных вычислений, а если дополнительно подключить необходимые математические библиотеки, то по своим возможностям он становится практически равным таким пакетам как Matlab, Octave и т.п.

Различные примеры вычислений приведены ниже. Более подробно об арифметических операциях будет рассказано в следующих уроках.

Для выхода из интерактивного режима, наберите команду

exit()

и нажмите ENTER.

В комплекте вместе с интерпретатором Python идет IDLE (интегрированная среда разработки). По своей сути она подобна интерпретатору, запущенному в интерактивном режиме с расширенным набором возможностей (подсветка синтаксиса, просмотр объектов, отладка и т.п.).

Для запуска IDLE в Windows необходимо перейти в папку Python в меню “Пуск” и найти там ярлык с именем “IDLE (Python 3.5 XX-bit)”.

В Linux оболочка IDLE по умолчанию отсутствует, поэтому ее предварительно нужно установить. Для этого, если у вас Ubuntu, введите в командной строке (для Python 3.4):

> sudo apt-get install idle-python3.4

В результате IDLE будет установлен на ваш компьютер.

Для запуска оболочки, введите:

> idle-python3.4

Ниже представлен внешний вид IDLE в ОС Linux.

Пакетный режим

Теперь запустим Python в режиме интерпретации файлов с исходным кодом (пакетный режим). Создайте файл с именем test.py, откройте его с помощью любого текстового редактора и введите следующий код:

a = int(input())
 print(a**2)
Эта программа принимает целое число на вход и выводит его квадрат. Для запуска, наберите в командной строке
> python test.py

Пример работы программы приведен в окне ниже.

Резюме

Для запуска Python в интерактивном режиме необходимо набрать в командной строке имя исполняемого файла интерпретатора (python или python3) или запустить IDLE (интегрированную среду разработки).

Для запуска Python в пакетном режиме введите в командной строке имя интерпретатора и имя файла с программой на языке Python через пробел:

> python test.py

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

<<<  Python. Урок 1. Установка      Python. Урок 3. Типы и модель данных >>>

Запуск скриптов Python3 из командной строки.

При запуске, интерпретатор CPython сканирует командную строку и переменную среду для настройки параметров выполнения скрипта.

Схемы командной строки и ее параметров других реализаций могут отличаться. Смотрите альтернативные реализации языка Python для уточнения параметров запуска конкретной реализации.

При вызове Python можно указать любую из следующих опций:

$ python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args] 

Самым распространенным вариантом использования, конечно, является простой вызов скрипта:


Варианты интерфейса командной строки Python.

Конструкция `python3 -c <command>` - выполняет код в `command` (может быть одним или несколькими операторами). Конструкция `python3 -m <module-name>` выполнит содержимое модуля, расположенное в `__main__`. Конструкция `python3 -i <script>` выполняет код в `script` и перейдет в интерактивный режим.

Переменные среды окружения Python.

В разделе описанные переменные среды влияют на поведение Python, они обрабатываются перед параметрами/флагами командной строки, отличными от -E или -I.

Осваиваем Python. Унция ноль. Введение. / Хабр

Предыстория

Присоединяюсь к MaxElc, DarwinTenk и Devgru :) Начинаю цикл статей посвященных Python. Сам я имею некоторый опыт обращения с PHP и Java. Но каждый раз, при относительном освоении какого-то инструмента — оставалось определённое неудовлетворение им, связанное с чем-то конкретным, и поиски продолжались. На сегодняшний день наиболее близко к идеалу в моих глазах стоит Python. Идеал недостижим — это понятно, посему и у Python есть недостатки. Прежде всего — это скорость выполнения, однако, эта проблема решаема несколькими путями и об этом мы обязательно поговорим чуть позднее.
Сам я начал осваивать Python буквально недавно. Начиная этот цикл статей — я преследую несколько целей. Во-первых, это дополнительная само мотивация + интерактивность, во-вторых, опыт. В-третьих, блуждая по просторам рунета — вижу, что Python куда менее популярен, чем в мире. Ситуацию надо исправлять :)
В соответствии с идеологией Python, а именно с тем, что одни из главных его козырей — это быстрота в освоении и скорость разработки, мы достаточно быстро, практически тезисно пронесёмся по основам синтаксиса и построения программ и перейдём к основной цели данного цикла — освоение django.
Итак, мы начинаем.

Архитектура

Python — интерпретируемый, скриптовый язык программирования. При первом запуске скрипта, интерпретатор транслирует инструкции языка в байт-код, сохраняя их в файле с расширением .pyc. Далее байт-код запускается на виртуальной машине Python (PVM). При вторичном запуске скрипта, интерпретатор отслеживает были ли внесены изменения в нём. Если нет, то запускается сразу .pyc файл.
Реализации Python:

  • CPython — стандартная реализация Python
  • Jython — альтернативная реализация Python. Основная цель которой — бесшовная интеграция с платформой Java. Состоит из java-классов, которые транслируют программный код на языке Python в java байт-код, который затем запускается на виртуальной машине Java (JVM).
  • IronPython — реализация Python предназначенная для интеграции с .NET платформой.
  • Shedskin C++ — нетрадиционный подход к выполнению программ на языке Python. Цель — оптимизация скорости выполнения. Преобразует исходный код Python в исходный код C++, который затем может быть скомпилирован в машинный код.
  • PyPy — реализация PVM на самом языке Python + JIT компилятор.
Варианты запуска программ

На хабре уже была написана хорошая инструкция для новичков, как быстро организовать рабочую среду для разработки на Python и django. Если вы уже проделали описанную в ней последовательность действий, то это означает, что на вашей машине уже установлен интерпретатор python. В большинстве Linux дистрибутивов он установлен по-умолчанию.

Вариант 1. Интерактивный режим

Для попадания в интерактивный режим необходимо ввести в командной строке команду python.

$ python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Hello World!'
Hello World!

В интерактивном режиме инструкции выполняются построчно. Для того, чтобы выполнить блок кода, можно, к примеру, набрать в пустом текстовом файле следующие две команды:

str1 = 'Hello World!'
str2 = " It's my second script"
print 'import has been done successfully'

И сохранить их в файле hi.py. Далее в командной строчке используя команду cd перейти в тот каталог, в котором вы сохранили файл и набрать команду python.
Для импорта инструкций можно использовать инструкцию import <имя файла без расширения .py>. Файлы в языке Python являются модулями, которые внутри себя содержат пространство имён. Импортируя модуль мы получаем доступ к пространству имён верхнего уровня.

$ python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hi
import has been done successfully
>>> print hi.str1+hi.str2
Hello World! It's my second script

Используя в инструкции конструкцию вида: hi.str1, мы обращаемся к имени str1, определённом внутри модуля hi.
Строки, числа в языке Python — это тоже объекты. Здесь прослеживается наследование парадигмы берущей начало от языка SmallTalk «Всё — объекты». Однако, если мне не изменяет память там речь шла и о том, что операторы — тоже были объектами. В python оператор «+» — это перегруженный оператор для строк выполняющий конкатенацию.
Для импортирования конкретных имён можно использовать инструкцию from:

>>> from hi import str1
>>> print str1
Hello World!

После чего мы сможем обращаться к импортируемому имени непосредственно.
После внесения каких-то изменений в файл, для того чтобы изменения вступили в силу — необходимо перезагрузить модуль с помощью функции reload().

>>> reload(hi)
<module 'hi' from 'hi.pyc'>

Для получения списка всех доступных имён модуля можно использовать функцию dir():

>>> dir(hi)
['__builtins__', '__doc__', '__file__', '__name__', 'str1', 'str2']

Вариант 2. Запуск из командной строки.

Запустить сценарий из командной строки можно следующим образом:

$ python hi.py

Так же сценарию можно передавать параметры командной строки. Доступ к ним из сценария можно получить, импортировав встроенный модуль sys. Изменим файл hi.py следующим образом:

import sys
print sys.argv

После чего вызовем его из команжной строки, передав несколько произвольных параметров:

$ python hi.py 1 2 3 'param-pam-pam'
['hi.py', '1', '2', '3', 'param-pam-pam']

В результате получим список, содержащий в себе переданные параметры. Список — это тоже конструкция языка Python. О списках речь пойдёт в следующих статьях.
Потоки ввода и вывода сценария можно перенаправлять с помощью средств командной оболочки, например так:

$ python hi.py 1 2 3 'param-pam-pam' > text.txt

Вариант 3. IDE.

Интерактивный режим удобен в некоторых случаях, например, когда нужно поэкспериментировать с какой-то определённой инструкцией. Однако, постоянно работать в нём неудобно т.к. Нужно постоянно вспоминать про перезагрузку модулей.
Поэтому гораздо удобнее воспользоваться описанной выше процедурой настройки IDE и запускать программы из неё. Так же при разработке программ на Python вполне приемлем вариант написания кода в блокноте с подсветкой синтаксиса и запуском программы из консоли.

На сегодня всё. В следующих статьях мы перейдём непосредственно к изучению конструкций языка. Не сомневаюсь, отклики будут и я буду на них ориентироваться.
Спасибо за внимание!

Python: запуск функции из командной строки

Я написал быстрый маленький скрипт Python, который можно вызвать из командной строки bash. Он принимает имя модуля, класса и метода, который вы хотите вызвать, и параметры, которые вы хотите передать. Я называю его PyRun и оставил расширение .py и сделал его исполняемым с помощью chmod +x PyRun, чтобы я мог просто быстро вызвать его следующим образом:

./PyRun PyTest.ClassName.Method1 Param1 

сохраните это в файле под названием PyRun

#!/usr/bin/env python #make executable in bash chmod +x PyRun import sys import inspect import importlib import os if __name__ == "__main__": cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0])) if cmd_folder not in sys.path: sys.path.insert(0, cmd_folder) # get the second argument from the command line methodname = sys.argv[1] # split this into module, class and function name modulename, classname, funcname = methodname.split(".") # get pointers to the objects based on the string names themodule = importlib.import_module(modulename) theclass = getattr(themodule, classname) thefunc = getattr(theclass, funcname) # pass all the parameters from the third until the end of # what the function needs & ignore the rest args = inspect.getargspec(thefunc) z = len(args[0]) + 2 params=sys.argv[2:z] thefunc(*params) 

вот пример модуля, чтобы показать, как это работает. Это сохраняется в файле под названием PyTest.py:

class SomeClass: @staticmethod def First(): print "First" @staticmethod def Second(x): print(x) # for x1 in x: # print x1 @staticmethod def Third(x, y): print x print y class OtherClass: @staticmethod def Uno(): print("Uno") 

попробуйте запустить эти примеры:

./PyRun PyTest.SomeClass.First ./PyRun PyTest.SomeClass.Second Hello ./PyRun PyTest.SomeClass.Third Hello World ./PyRun PyTest.OtherClass.Uno ./PyRun PyTest.SomeClass.Second "Hello" ./PyRun PyTest.SomeClass.Second \(Hello, World\) 

обратите внимание на последний пример экранирования скобок для передачи кортежа в качестве единственного параметра во второй метод.

если вы передаете слишком мало параметров для того, что метод должен вы получите ошибку. Если вы проходите слишком много, он игнорирует дополнительные услуги. Модуль должен находиться в текущей рабочей папке, поставить PyRun можно в любом месте вашего пути.

запустить функцию из командной строки

Я написал быстрый маленький скрипт Python, который вызывается из командной строки bash. Он принимает имя модуля, класса и метода, который вы хотите вызвать, и параметры, которые вы хотите передать. Я называю его Пирун и перестал .py расширение и сделал его исполняемым с chmod +x PyRun, так что я могу просто назвать его быстро, как следовать:

./PyRun PyTest.ClassName.Method1 Param1 

сохраните это в файле под названием PyRun

#!/usr/bin/env python #make executable in bash chmod +x PyRun import sys import inspect import importlib import os if __name__ == "__main__": cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0])) if cmd_folder not in sys.path: sys.path.insert(0, cmd_folder) # get the second argument from the command line methodname = sys.argv[1] # split this into module, class and function name modulename, classname, funcname = methodname.split(".") # get pointers to the objects based on the string names themodule = importlib.import_module(modulename) theclass = getattr(themodule, classname) thefunc = getattr(theclass, funcname) # pass all the parameters from the third until the end of # what the function needs & ignore the rest args = inspect.getargspec(thefunc) z = len(args[0]) + 2 params=sys.argv[2:z] thefunc(*params) 

вот пример модуля, чтобы показать, как это работает. Это сохраняется в файле под названием PyTest.py:

class SomeClass: @staticmethod def First(): print "First" @staticmethod def Second(x): print(x) # for x1 in x: # print x1 @staticmethod def Third(x, y): print x print y class OtherClass: @staticmethod def Uno(): print("Uno") 

попробуйте запустить следующие примеры:

./PyRun PyTest.SomeClass.First ./PyRun PyTest.SomeClass.Second Hello ./PyRun PyTest.SomeClass.Third Hello World ./PyRun PyTest.OtherClass.Uno ./PyRun PyTest.SomeClass.Second "Hello" ./PyRun PyTest.SomeClass.Second \(Hello, World\) 

обратите внимание на последний пример экранирования скобок для передачи кортежа в качестве единственного параметра второму методу.

если вы передадите слишком мало параметров для того, что нужно методу, вы получите ошибку. Если вы проходите слишком много, он игнорирует дополнительные. Модуль должен быть в текущей рабочей папке, поставить PyRun можно в любом месте на вашем пути.