статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
Выполнение команд оболочки с помощью Python
Введение Повторяющиеся задачи созрели для автоматизации. Разработчики и системные администраторы обычно автоматизируют рутинные задачи, такие как проверки работоспособности и резервное копирование файлов, с помощью сценариев оболочки. Однако по мере того, как эти задачи становятся более сложными, сценарии оболочки может становиться все труднее поддерживать. К счастью, мы можем использовать Python вместо сценариев оболочки для автоматизации. Python предоставляет методы для запуска команд оболочки, предоставляя нам те же функции, что и сценарии оболочки. Изучение того, как запускать команды оболочки в Pyt
Время чтения: 7 мин.
Вступление
Повторяющиеся задачи созрели для автоматизации. Разработчики и системные администраторы обычно автоматизируют рутинные задачи, такие как проверки работоспособности и резервное копирование файлов, с помощью сценариев оболочки. Однако по мере того, как эти задачи становятся более сложными, сценарии оболочки может становиться все труднее поддерживать.
006 Как запускать Python программы в Windows
К счастью, мы можем использовать Python вместо сценариев оболочки для автоматизации. Python предоставляет методы для запуска команд оболочки, предоставляя нам те же функции, что и сценарии оболочки. Изучение того, как запускать команды оболочки в Python, открывает нам возможность автоматизировать компьютерные задачи структурированным и масштабируемым образом.
В этой статье мы рассмотрим различные способы выполнения команд оболочки в Python и идеальную ситуацию для использования каждого метода.
Использование os.system для запуска команды
Python позволяет нам немедленно выполнить команду оболочки, которая хранится в строке, с помощью функции os.system() .
Начнем с создания нового файла Python с именем echo_adelle.py и введем следующее:
import os os.system(«echo Hello from the other side!»)
Первое, что мы делаем в нашем файле Python, — это импортируем os , который содержит system функцию, которая может выполнять команды оболочки. Следующая строка делает именно это, запускает команду echo в нашей оболочке через Python.
В вашем терминале запустите этот файл с помощью следующей команды, и вы должны увидеть соответствующий вывод:
$ python3 echo_adelle.py Hello from the other side!
По мере того как echo команд отпечатков на наш stdout , os.system() также отображает выходной сигнал на наш stdout потока. os.system() не отображается в консоли, она возвращает код выхода команды оболочки. Код выхода 0 означает, что он работал без проблем, а любое другое число означает ошибку.
Давайте создадим новый файл cd_return_codes.py и введем следующее:
import os home_dir = os.system(«cd ~») print(«`cd ~` ran with exit code %d» % home_dir) unknown_dir = os.system(«cd doesnotexist») print(«`cd doesnotexis` ran with exit code %d» % unknown_dir)
В этом сценарии мы создаем две переменные, в которых хранится результат выполнения команд, которые меняют каталог на домашнюю папку и на несуществующую папку. Запустив этот файл, мы увидим:
$ python3 cd_return_codes.py `cd ~` ran with exit code 0 sh: line 0: cd: doesnotexist: No such file or directory `cd doesnotexist` ran with exit code 256
Первая команда, которая меняет каталог на домашний каталог, выполняется успешно. Следовательно, os.system() возвращает нулевой код выхода, который хранится в home_dir . С другой стороны, unknown_dir хранит код выхода неудачной команды bash для изменения каталога на несуществующую папку.
Функция os.system() выполняет команду, выводит любой вывод команды на консоль и возвращает код выхода команды. Если мы хотим более детального управления вводом и выводом команд оболочки в Python, мы должны использовать модуль subprocess
Запуск команды с подпроцессом
- это рекомендуемый Python способ выполнения команд оболочки. Это дает нам гибкость для подавления вывода команд оболочки или цепочки входов и выходов различных команд вместе, при этом обеспечивая аналогичный опыт с os.system() для базовых случаев использования.
В новом list_subprocess.py именем list_subprocess.py напишите следующий код:
import subprocess list_files = subprocess.run([«ls», «-l»]) print(«The exit code was: %d» % list_files.returncode)
В первой строке мы импортируем subprocess , который является частью стандартной библиотеки Python. Затем мы используем subprocess.run() для выполнения команды. Как и os.system() , команда subprocess.run() возвращает код выхода того, что было выполнено.
В отличие от os.system() , обратите внимание, что subprocess.run() требует в качестве входных данных список строк, а не одну строку. Первый элемент списка — это имя команды. Остальные элементы списка — это флаги и аргументы команды.
Примечание. Как правило, аргументы необходимо разделять по ls -alh будет [«ls», «-alh»] , а ls -a -l -h будет [«ls», «-a», -«l», «-h»] . В качестве другого примера, echo hello world будет [«echo», «hello», «world»] , тогда как echo «hello world» или echo hello world будет [«echo», «hello world»] .
Запустите этот файл, и вывод вашей консоли будет примерно таким:
$ python3 list_subprocess.py total 80 [email protected] 1 stackabuse staff 216 Dec 6 10:29 cd_return_codes.py [email protected] 1 stackabuse staff 56 Dec 6 10:11 echo_adelle.py [email protected] 1 stackabuse staff 116 Dec 6 11:20 list_subprocess.py The exit code was: 0
Теперь давайте попробуем использовать одну из более продвинутых функций subprocess.run() , а именно игнорировать вывод в stdout . В том же list_subprocess.py измените:
list_files = subprocess.run([«ls», «-l»])
list_files = subprocess.run([«ls», «-l»], stdout=subprocess.DEVNULL)
Стандартный вывод команды теперь направляется на специальное устройство /dev/null , что означает, что вывод не будет отображаться на наших консолях. Запустите файл в своей оболочке, чтобы увидеть следующий вывод:
$ python3 list_subprocess.py The exit code was: 0
Что, если бы мы хотели предоставить ввод для команды? subprocess.run() облегчает это своим input аргументом. Создайте новый файл с именем cat_subprocess.py , набрав следующее:
import subprocess useless_cat_call = subprocess.run([«cat»], stdout=subprocess.PIPE, text=True, input=»Hello from the other side») print(useless_cat_call.stdout) # Hello from the other side
Разбор параметров командной строки в Python
При создании консольных программ в Python очень часто необходимо разобрать параметры (аргументы) передаваемые через командную строку, это можно сделать используя переменную argv из модуля sys, а так же с помощью модуля argparse из стандартной библиотеки Pyhton.
Второй способ более предпочтительный и удобный, далее ему мы уделим больше внимания.
Статья ниже не является полным описание всех возможностей модуля argparse, это просто общий обзор.
Ниже я иногда пишу аргументы командной строки, иногда параметры командной строки… Имеется ввиду одно и тоже
Получение параметров без использования argparse
Например, мы хотим написать программу после запуска выводящую в консоль «Привет ». Имя мы будем передавать через параметр в командной строке, далее его нужно получить в нашей программе. Как это сделать?
Как запустить питон скрипт через консоль?
Скрипты можно запустить и с помощью команды Python прямо в интерфейсе терминала. Для этого нужно убедиться, что вы указали путь до него или находитесь в той же папке. Для выполнения скрипта (python_script.py) откройте командную строку и напишите python3 python_script.py .
Как запустить код через консоль?
- В Windows нажать комбинацию клавиш «Флажок» + «R», после чего ввести команду cmd и нажать на кнопку «ОК» в диалоговом окне.
- В Linux или других подобных операционных системах доступ к командной строке предоставляется с помощью дополнительной программы.
Как запустить Python скрипт в Visual Studio Code?
- Установите Расширение прогона кода
- Откройте файл кода Python в текстовом редакторе, затем используйте ярлык Ctrl+Alt+N или нажмите F1 , а затем выберите/введите Run Code , код будет запущен, и вывод будет отображаться в окне вывода.
Как запустить Python скрипт из Python?
- щелкните правой кнопкой мыши на скрипте .py.
- выберите «edit with IDLE» (откроется окно Python IDE для редактирования / запуска)
- нажмите «F5», чтобы запустить модуль (или выберите «Run Module» из выпадающего меню «Run»)
Как запустить программу из командной строки?
- откройте командную строку (Пуск -> Выполнить ->cmd.exe), перейдите к месту расположения вашей папки с помощью команды командной строки cd , выполните команду .exe оттуда .
- В качестве альтернативы вы можете создать пакетный файл (. .
- В командной строке введите: your_cmd.exe pause.
Как открыть файл py?
- В Windows: Python, Microsoft Notepad, Notepad++, Sublime Text, codeEditor, Любой другой текстовый редактор
- В Mac OS: MacroMates TextMate, Любой другой текстовый редактор
- В Linux: GNU Emacs, gedit, Любой другой текстовый редактор
Как запустить программу в IDLE?
Для запуска IDLE в Windows необходимо перейти в папку Python в меню “Пуск” и найти там ярлык с именем “IDLE (Python 3.5 XX-bit)”. В результате IDLE будет установлен на ваш компьютер.
Как запустить код в PyCharm?
Насколько я знаю, PyCharm имеет 2 способа запуска скрипта в консоли: 1) Выберите кучу кода и нажмите Ctrl + Alt + E . 2) сохраните код в файле и импортируйте его из консоли.
Как запустить код в Visual Studio?
- Для сборки проекта выберите в меню Сборка пункт Собрать решение. Окно Вывод отображает результаты процесса сборки.
- Чтобы запустить этот код, в строке меню выберите Отладка и Запуск без отладки. Открывается окно консоли, и запускается ваше приложение.
Как запустить проект Python в Visual Studio?
Чтобы быстро протестировать поддержку Python, запустите Visual Studio, нажмите клавиши ALT+I, чтобы открыть интерактивное окно Python, и введите 2+2 .
Как выполнить код Python?
Чтобы запустить «Пайтон» в интерактивном режиме, надо набрать в командной строке (cmd) имя интерпретатора — python (иногда это python3) либо запустить интегрированную среду разработки IDLE. Чтобы выполнить запуск в пакетном режиме, надо ввести в командной строке имя интерпретатора, плюс имя файла.
Как запустить скрипт Python на хостинге?
- Войдите Cpanel.
- Перейти в Файлы > Файловый менеджер
- Перейдите в папку cgi-bin.
- Создайте фаил с расширением .py, для примера test.py в папке /home/cPuser/public_html/cgi-bin (где cPuser ваш логин в cPanel)
- Установите права 755 на фаил
Как запустить другой файл Python?
- Поместите это в main.py: #!/usr/bin/python import yoursubfile.
- Поместите это в свой файл yoursubfile.py #!/usr/bin/python print «hello»;
- Запустите его: python main. py.
- Он печатает: hello.
Как запустить программу на питоне на Ubuntu?
Когда терминал открывается, введите «sudo chmod + x Yourfilename». После ввода пароля введите «python./Yourfilename», который откроет ваш файл python в командной строке. Надеюсь, это поможет!
Источник: dmcagency.ru