- Run Python in cmd [duplicate]
- 3 Answers 3
- How to run cmd.exe commands from python?
- 3 Answers 3
- How to run a .py file in windows command line?
- 3 Answers 3
- Как запустить код на Python?
- Запуск кода Python: интерактивный режим в CMD
- Запуск Python: интерактивный режим в IDLE
- Как запустить приложение Python в пакетном режиме?
- Делаем выводы:
- Атрибуты и методы объекта Cmd модуля cmd в Python.
- Содержание:
- Методы экземпляра класса cmd.Cmd .
- Cmd.cmdloop(intro=None) :
- Cmd.onecmd(str) :
- Cmd.emptyline() :
- Cmd.default(line) :
- Cmd.completedefault(text, line, begidx, endidx) :
- Cmd.precmd(line) :
- Cmd.postcmd(stop, line) :
- Cmd.preloop() :
- Cmd.postloop() :
- Общедоступные переменные экземпляра класса cmd.Cmd .
- Cmd.prompt :
- Cmd.identchars :
- Cmd.lastcmd :
- Cmd.cmdqueue :
- Cmd.intro :
- Cmd.doc_header :
- Cmd.misc_header :
- Cmd.undoc_header :
- Cmd.ruler :
- Cmd.use_rawinput :
Run Python in cmd [duplicate]
I am running python 2.7, I can run a program fine when I open the *.py file.
But when I go to cmd and type » python *.py any other args «, it doesn’t work, it says that python is not recognised. This is hard because I am trying to do things like sys.argv[] , any help is great.
3 Answers 3
You probably don’t have the Python executable on your PATH . The PATH variable tells the command interpreter where to find the commands you are issuing.
If you are on a Unix/Linux system try
Under Windows it may vary, so find where Python ( python.exe specifically) was installed and specify that complete path to get the command to run. I think this will work though:
Under Unix issue this command at the prompt:
Under Windows:
and it should run.
The long term solution is to add the Python directory to your PATH variable.
I hope, your problem really was the problem I think it is, because I (hopefully) had the same. I’m very sure, Levon’s answer was right, so this is the n00b solution. For the CMD to recognize «python», you need to add something to the environment variable «Path». When you’re done with the insturctions you can type «echo %PATH%» into the cmd and it should show you the variable value you just changed.
- Go to Computer > System Properties > Advanced Settings > Environment Variables
- Click the variable «Path» and add ;C:\Python27 to the variable value. Don’t forget the «;» to separate the values.
- Confirm with OK in both windows and you’re done.
You can solve this creating a bat file contenting:
How to run cmd.exe commands from python?
I would like to run to run a script that opens GUI in which i press a start button which runs (opens, writes, runs) cmd.exe command line.
Command is following : «ConverterApp.exe» file1.x file1.y
ConverterApp is placed in a random desktop folder. What is does it converts one type of photo to another. And right now i have to use the command above for every photo, so i want to write pyhton program which will convert all .x files in folder to .y.
From my reaserch on the topic i have to use subprocess , bit im kind of lost on how to use it.
3 Answers 3
use the subprocess module.
you can still use subprocess.call , but for Python versions >3.4, it’s preferred to use the newer subprocess.run .
Note: in both subprocess.call , and subprocess.run , your command should be passed as a sequence (i.e. a list).
Have you looked into using os.system to execute commands? It is simple to use and may be sufficient to accomplish what you are trying to do. On Windows, it usually runs cmd.exe for you.
Execute the command (a string) in a subshell. This is implemented by calling the Standard C function system(), and has the same limitations. Changes to sys.stdin, etc. are not reflected in the environment of the executed command. If command generates any output, it will be sent to the interpreter standard output stream.
On Unix, the return value is the exit status of the process encoded in the format specified for wait(). Note that POSIX does not specify the meaning of the return value of the C system() function, so the return value of the Python function is system-dependent.
On Windows, the return value is that returned by the system shell after running command. The shell is given by the Windows environment variable COMSPEC: it is usually cmd.exe, which returns the exit status of the command run; on systems using a non-native shell, consult your shell documentation.
The subprocess module provides more powerful facilities for spawning new processes and retrieving their results; using that module is preferable to using this function. See the Replacing Older Functions with the subprocess Module section in the subprocess documentation for some helpful recipes.
How to run a .py file in windows command line?
I have written a simple python program using IDLE to run it from command line. I don’t have permission to save .py file in python directory (C:\program files\python33) so I saved it to C:\Pyscripts.
Also python was already been added to the PATH and I can run a simple print («Hello») in command line. I have saved this line into a py file and Now I want to run it from command prompt but I have faced different errors! I have searched and tested different ways but they didn’t work!
3 Answers 3
- Start cmd.exe
- cd C:\Pyscripts
- python filename.py
For basics like print ‘hello’ , you don’t need any library import statements but for slightly more complex things you will.
Which python do you have installed?
You don’t want to save files in c:\program files under windows. That isn’t a good practice. Setting up a dev directory like you did or under your user directory is a much better option.
Have you added python to the path setting? If you start a command prompt (cmd.exe, not IDLE and type python , what do you get? If you haven’t set the python path, see http://docs.python.org/2/using/windows.html or http://www.katsbits.com/tutorials/blender/setting-up-windows-python-path-system-variable.php. Just update the settings to the version of python you are using e.g c:\python27.
Get a text editor instead of using IDLE. textpad, textedit, vim, emacs ,context, geanie, sublime, and many many more. Or get an IDE. Aptana’s studio 3 is easy to use and free (eclipse with plugins already installed) or the free community version of pycharm.
Как запустить код на Python?
В одной из предыдущих статей рассказывалось, как установить Python на операционные системы Windows и Linux. Этот материал посвящён запуску и первоначальной работе с «Пайтоном». Будут рассмотрены два основных способа запустить его: интерпретация строк исходного кода, вводимого с помощью клавиатуры (интерактивный режим), а также исполнение файлов с кодом (пакетный режим). Отдельный разговор пойдёт про особенности запуска программы и кода Python в Windows и Linux. Материал предназначен для начинающих.
Язык программирования «Пайтон» является интерпретируемым. В этом контексте можно сказать, что кроме самой программы, пользователю ещё нужен и специальный инструмент, обеспечивающий её запуск.
Вернувшись на несколько шагов назад, следует напомнить, что языки программирования бывают: — компилируемыми. С высокоуровневого языка код переводится в машинный с учётом конкретной платформы. Далее распространение происходит в качестве бинарного файла (чаще всего). Запускаться такая программа может без дополнительных программных средств (необходимые библиотеки следует оставить за рамками данного обсуждения). Наиболее распространёнными компилируемыми языками программирования являются C++ и C; — интерпретируемыми. В этом случае выполнение программы осуществляется интерпретатором с последующим распространением в виде исходного кода. Самый популярный язык из этой категории — общеизвестный «Питон» или «Пайтон» (Python).
Запуск кода Python: интерактивный режим в CMD
Python способен функционировать в 2-х режимах: — пакетный; — интерактивный.
Пользователям Windows можно проверить интерактивный режим работы с кодом с помощью командной строки (CMD, command line interpreter — интерпретатор командной строки). Открыв командную строку, следует набрать следующую команду:
Итогом станет запуск «Пайтона» в интерактивном режиме. Далее программа станет ждать ввод последующих команд (commands) от пользователя. Вот, как это может выглядеть:
Программа готова к запуску кода. Прекрасный пример — использование классического приветствия, в которое можно внести минимальные изменения: print(«Привет, OTUS!») . В таком коде внутри скобок пользователь может написать и другие фразы.
Зелёная стрелка — это команда, красная — результат. По коду видно, что программа отработала без затруднений.
Но возможности «Пайтона» выходят далеко за пределы стандартного «хэллоуворлда». Его без проблем можно использовать и в качестве калькулятора, выполняя вычисления.
А при подключении соответствующих библиотек, эти вычисления могут быть весьма сложны и мало уступят специализированным пакетам Matlab.
Далее следует выйти из интерактивного режима, набрав простую команду exit() .
Запуск Python: интерактивный режим в IDLE
При установке языка программирования Python в комплекте с ним идёт IDLE. Это интегрированная среда разработки, подобная по своей сути интерпретатору, который запущен интерактивно. Отличие — расширенный набор возможностей. Среди таких возможностей: — отладка; — просмотр объектов; — подсветка синтаксиса и прочие.
Чтобы запустить IDLE в Windows, следует перейти в меню «Пуск», где можно без проблем найти нужный инструмент:
После запуска пользователь увидит следующую среду:
В ней можно тоже полноценно работать с кодом.
Если же разговор идёт про Linux, то в этой операционной системе IDLE-оболочка по дефолту отсутствует, поэтому придётся её инсталлировать. Для Python 3.4 это будет выглядеть так:
Итогом станет загрузка IDLE на персональный компьютер пользователя. Запустить оболочку тоже несложно:
Выглядеть среда будет следующим образом:
Как запустить приложение Python в пакетном режиме?
Бывает, у пользователя уже есть Python-файлы с расширением .py. Их тоже можно запустить через командную строку. Для этого вызывается интерпретатор Python, а в качестве аргумента передаётся соответствующий файл.
Давайте продемонстрируем это на практике. Откройте блокнот и поместите туда уже знакомые строки кода:
Сохраните файл под именем example.py. Пусть он будет сохранен на диске C (можно выбрать и другую директорию на усмотрение пользователя).
Теперь откройте командную строку, перейдите в соответствующую директорию и можете запускать файл:
Красная стрелка — переход в нужную директорию, синяя — команда для запуска «Питона» в пакетном режиме, зелёная — итоговый результат. Всё просто.
Делаем выводы:
- Чтобы запустить «Пайтон» в интерактивном режиме, надо набрать в командной строке (cmd) имя интерпретатора — python (иногда это python3) либо запустить интегрированную среду разработки IDLE.
- Чтобы выполнить запуск в пакетном режиме, надо ввести в командной строке имя интерпретатора, плюс имя файла. В нашем случае это python.example.py .
Для закрепления материала настоятельно рекомендуется повторить всё вышеописанное самостоятельно.
Атрибуты и методы объекта Cmd модуля cmd в Python.
Содержание:
- Cmd.cmdloop() — запускает интерпретатор,
- Cmd.onecmd() — возвращает результат метода .do_*() для команды,
- Cmd.emptyline() — вызывается, когда вводится пустая строка,
- Cmd.default() — вызываться, когда команда не распознается,
- Cmd.completedefault() — вызываться для завершения строки ввода,
- Cmd.precmd() — хук, выполняемый непосредственно перед командной строкой,
- Cmd.postcmd() — хук, выполняемый сразу после завершения отправки команды,
- Cmd.preloop() — хук, выполняется один раз при вызове Cmd.cmdloop() ,
- Cmd.postloop() — хук, выполняется один раз, когда метод Cmd.cmdloop() возвращает результат,
- Cmd.prompt — приглашение командной строки,
- Cmd.identchars — строка символов для префикса команды,
- Cmd.lastcmd — последний непустой префикс команды,
- Cmd.cmdqueue — список строк ввода,
- Cmd.intro — строка — заставка или баннер,
- Cmd.doc_header — заголовок для документированных команд,
- Cmd.misc_header — заголовок для различных разделов справки,
- Cmd.undoc_header — заголовок для недокументированных команд,
- Cmd.ruler — символ, используемый для разделительных линий,
- Cmd.use_rawinput — что использовать в качестве чтения следующей команды.
Методы экземпляра класса cmd.Cmd .
Cmd.cmdloop(intro=None) :
Метод Cmd.cmdloop() неоднократно выдает приглашение командной строки, принимает ввод, анализирует начальный префикс полученного ввода и отправляет методы действия, передавая им остаток строки в качестве аргумента.
Необязательный аргумент-это баннер или строка ввода, которая должна быть выдана перед первым приглашением. Он переопределяет атрибут Cmd.intro .
Если импортирован модуль readline , то ввод автоматически унаследует редактирование списка истории в стиле bash . Например, клавиша Ctrl — P прокручивает назад к последней команде, Ctrl — N переходит к следующей, Ctrl — F перемещает курсор вправо, Ctrl — B перемещает курсор влево и т. д.).
Конец файла при вводе передается обратно как строка ‘EOF’ .
Экземпляр интерпретатора распознает имя команды foo тогда и только тогда, когда у него есть метод .do_foo() . Как особый случай, строка, начинающаяся с символа ‘?’ отправляется методу do_help() . Другой особый случай — строка, начинающаяся с символа ‘!’ отправляется методу do_shell() (если такой метод определен).
Метод Cmd.cmdloop() возвращает, когда метод Cmd.postcmd() возвращает значение True . Аргумент stop для метода Cmd.postcmd() — это возвращаемое значение команды из соответствующего метода .do_*() .
Если завершение (completion) включено, то завершение команд будет выполняться автоматически, а завершение команд args выполняется путем вызова метода .complete_foo() с аргументами text , line , beginidx и endidx .
- Аргумент text — это строковый префикс, который мы пытаемся сопоставить: все возвращаемые совпадения должны начинаться с него.
- Аргумент line — это текущая строка ввода с удаленными ведущими пробелами.
- Аргументы beginidx и endidx — это начальный и конечный индексы текста префикса, которые могут использоваться для обеспечения различного завершения в зависимости от того, в какой позиции находится аргумент.
Все подклассы Cmd наследуют предопределенный метод .do_help() . Этот метод, вызываемый с аргументом bar , вызывает соответствующий метод .help_bar() и если он отсутствует, то печатает строку документации метода .do_bar() , если конечно она доступна.
Без аргументов, метод .do_help() перечисляет все доступные разделы справки, а также перечисляет все недокументированные команды. То есть все команды с соответствующими методами .help_*() или команды, у которых есть строки документации.
Cmd.onecmd(str) :
Метод Cmd.onecmd() интерпретирует аргумент str , как если бы он был введен в ответ на запрос.
Это поведение можно изменить, но обычно в этом нет необходимости. Смотрите полезные хуки выполнения в методах Cmd.precmd() и Cmd.postcmd() .
Возвращаемое значение — это флаг, указывающий, следует ли прекратить интерпретацию команд интерпретатором. Если для команды str существует метод .do_*() , то возвращается значение этого метода, в противном случае возвращается значение из метода .default() .
Cmd.emptyline() :
Метод Cmd.emptyline() вызывается, когда в ответ на приглашение вводится пустая строка. Если этот метод не отменен, то он повторяет последнюю введенную непустую команду.
Cmd.default(line) :
Метод Cmd.default() будет вызываться в строке ввода, когда префикс команды не распознается. Если этот метод не переопределен, то он выводит сообщение об ошибке и возвращает результат.
Cmd.completedefault(text, line, begidx, endidx) :
Метод Cmd.completedefault() будет вызываться для завершения строки ввода, когда недоступен специфичный для команды метод .complete_*() . По умолчанию он возвращает пустой список.
- Аргумент text — это строковый префикс, который мы пытаемся сопоставить: все возвращаемые совпадения должны начинаться с него.
- Аргумент line — это текущая строка ввода с удаленными ведущими пробелами.
- Аргументы beginidx и endidx — это начальный и конечный индексы текста префикса, которые могут использоваться для обеспечения различного завершения в зависимости от того, в какой позиции находится аргумент.
Cmd.precmd(line) :
Метод Cmd.precmd() представляет собой хук, выполняемый непосредственно перед командной строкой line , но после того, как приглашение ввода будет сгенерировано и выдано.
Этот метод является заглушкой в cmd.Cmd . Он существует для переопределения в подклассах. Возвращаемое значение используется как команда, которая будет выполняться методом Cmd.onecmd() . Реализация метода Cmd.precmd() может переписать команду или просто вернуть строку line без изменений.
Cmd.postcmd(stop, line) :
Метод Cmd.postcmd() представляет собой перехватчик, выполняемый сразу после завершения отправки команды. Этот метод является заглушкой в cmd.Cmd . Он существует для переопределения в подклассах.
Аргумент line — это командная строка, которая была выполнена, а аргумент stop — флаг, указывающий, будет ли выполнение прекращено после вызова postcmd(). Это будет возвращаемое значение метода Cmd.onecmd() .
Возвращаемое значение этого метода будет использоваться в качестве нового значения для внутреннего флага, который соответствует stop ; Возвращаемое значение False приведет к продолжению интерпретации.
Cmd.preloop() :
Метод Cmd.preloop() представляет собой перехватчик, выполняется один раз при вызове Cmd.cmdloop() . Этот метод является заглушкой в cmd.Cmd . Он существует для переопределения в подклассах
Cmd.postloop() :
Метод Cmd.postloop() представляет собой хук и выполняется один раз, когда метод Cmd.cmdloop() собирается вернуть результат. Этот метод является заглушкой в cmd.Cmd . Он существует для переопределения в подклассах
Общедоступные переменные экземпляра класса cmd.Cmd .
Cmd.prompt :
Атрибут Cmd.prompt представляет собой приглашение, выводимое для запроса ввода данных.
Cmd.identchars :
Атрибут Cmd.identchars представляет собой строку символов, принятых для префикса команды.
Cmd.lastcmd :
Атрибут Cmd.lastcmd представляет собой последний непустой префикс команды, который был замечен.
Cmd.cmdqueue :
Атрибут Cmd.cmdqueue представляет собой список строк ввода в очереди.
Список Cmd.cmdqueue проверяется в методом Cmd.cmdloop() , когда требуется новый ввод. Если он непустой, то его элементы будут обрабатываться по порядку, как если бы они были введены в командной строке.
Cmd.intro :
Атрибут Cmd.intro — это строка, которую нужно оформить как заставку или баннер. Может быть отменено путем передачи аргумента методу Cmd.cmdloop() .
Cmd.doc_header :
Атрибут Cmd.doc_header представляет собой заголовок , который нужно выдать, если вывод справки содержит раздел для документированных команд.
Cmd.misc_header :
Атрибут Cmd.misc_header представляет собой заголовок , который нужно выдать, если вывод справки содержит раздел для различных разделов справки (то есть существуют методы .help_*() без соответствующих методов .do_*() ).
Cmd.undoc_header :
Атрибут Cmd.undoc_header представляет собой заголовок, который нужно выдать, если в выводе справки есть раздел для недокументированных команд (то есть есть методы do_*() без соответствующих методов .help_*() ).
Cmd.ruler :
Атрибут Cmd.ruler представляет собой символ, используемый для рисования разделительных линий под заголовками справочных сообщений. Если равен None , то разделительная линия не рисуется. По умолчанию это символ ‘=’ .
Cmd.use_rawinput :
Атрибут Cmd.use_rawinput представляет собой флаг, по умолчанию имеющий значение True .
- Если True , то метод Cmd.cmdloop() использует функцию input() для отображения приглашения и чтения следующей команды.
- Если False , то будут используются методы sys.stdout.write() и sys.stdin.readline() .
Это означает, что при импорте модуля readline в системах, поддерживающих его, интерпретатор автоматически будет поддерживать Emacs-подобное редактирование строк и нажатия клавиш истории команд.