Перейти к содержимому

Как запустить программу с помощью python

  • автор:

Запуск других программ из Python

Программа на Python может запускать другие программы с помощью функции Popen() (от process open) встроенного модуля subprocess. В качестве аргумента функция принимает имя программы, которую нужно запустить:

>>> import subprocess >>> subprocess.Popen(‘C:\\Windows\\System32\\calc.exe’)

Возвращаемое значение представляет собой объект Popen , имеющий два полезных метода: poll() и wait() .

Метод poll() возвращает значение None , если в момент его вызова процесс все еще выполняется. Если же процесс к этому моменту завершен, то он возвращает код завершения процесса. Код заверешения служит индикатором того, завершился ли процесс без ошибок (код равен нулю) или же его завершение было вызвано ошибкой (ненулевой код).

Метод wait() ожидает завершения запущенного процесса, прежде чем продолжить выполнение основной программы. Возвращаемым значением метода является целочисленный код завершения процесса.

>>> notepad = subprocess.Popen('C:\\Windows\\System32\\notepad.exe') >>> notepad.poll() == None True >>> notepad.poll() == None False >>> notepad.wait() 0 >>> notepad.poll() 0

Сначала мы открываем процесс блокнота, затем проверяем, возвращает ли метод poll() значение None . Это означает, что процесс все еще выполняется. После этого закрываем блокнот и еще раз проверяем, возвращает ли метод poll() значение None . Теперь оба метода, wait() и poll() возвращают нулевое значение, что указывает на завершение программы notepad.exe без ошибок.

Передача аргументов командной строки

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

>>> subprocess.Popen([‘C:\\Windows\\System32\\notepad.exe’, ‘C:\\example\\readme.txt’])

Здесь мы не только запускаем приложение notepad.exe , но и открываем файл readme.txt .

Открытие файлов программ по умолчанию

Двойной клик на иконке файла с расширением .txt позволяет автоматически запустить приложение, ассоциированное с этим расширением. Функция Popen() также может открывать файлы подобным образом:

>>> subprocess.Popen((‘start’, ‘C:\\example\\readme.txt’), shell = True)

В каждой операционной системе есть программа, выполняющая те же функции, что и двойной клик на иконке файла. В Windows это программа start , в Ubuntu Linux — программа see .

Именованный аргумент shell = True нужен только для ОС Windows.

# Таймер обратного отсчета import time, subprocess wait = 10 while wait > 0: print(wait, end='') time.sleep(1) wait = wait - 1 # Воспроизведение звукового файла по завершении обратного отсчета subprocess.Popen(['start', 'C:\\example\alarm.wav'], shell = True)
  • Работа с потоками в Python
  • Работа с датой и временем в Python
  • Работа с файлами MS Word в Python
  • Работа с файлами Excel в Python
  • Модуль Selenium, управление браузером
  • Парсинг сайтов, модуль Beautiful Soup
  • Работа с HTTP в Python, модуль Requests

Каталог оборудования

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Производители

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Функциональные группы

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Категории блога
Облако тегов

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (122)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (169)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (69)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (28)
  • Ключ (28)
  • Команда (87)
  • Компонент (60)
  • Конфигурация (64)
  • Корзина (32)
  • ЛокальнаяСеть (32)
  • Модуль (34)
  • Навигация (31)
  • Настройка (141)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (101)
  • Сервер (75)
  • Событие (27)
  • Теория (106)
  • Установка (66)
  • Файл (51)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Запуск приложения через python

Но также, по мимо открытия сайта, возможно есть открытие приложений, так какой модуль/строку нужно прописать для открытия приложения на Пк?

Отслеживать
задан 2 авг 2021 в 15:20
user414690 user414690
Нет такого способа открытия сайта. Я запустил эту строчку и получилась ошибка.
2 авг 2021 в 15:27
Модуль webbrowser используется. Если вам надо — pip install webbrowser
– user414690
2 авг 2021 в 15:31

конечно же pip install webbrowser не будет работать �� модуль webbrowser — стандартный и его надо импортировать, а не устанавливать.

2 авг 2021 в 15:36

Насколько я понял, Вы хотите открыть любое приложение на ПК? Если это так, то для этого есть модули os и, если не ошибаюсь, subprocess. К ответу прилагаю ссылку на пример кода: codegrepper.com/code-examples/python/… Удачи!

2 авг 2021 в 15:39

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

os.startfile(r'C:/Users/Johnny/AppData/Roaming/Telegram Desktop/t1/Telegram.exe') 

Отслеживать
3,908 4 4 золотых знака 9 9 серебряных знаков 22 22 бронзовых знака
ответ дан 10 июн 2022 в 17:10

добро пожаловать на stack overflow на русском! пожалуйста, постарайтесь оставлять чуть более развёрнутые ответы. дополнить ответ можно, нажав править

10 июн 2022 в 17:15

Есть модуль, subprocess , который позволяет запускать системные команды (которые есть в консоле). А при помощи таких команд можно запустить необходимое приложение.

import subprocess subprocess.run(["calc.exe"]) 

Очень подробный ответ о возможности subprocess.run есть на английском StackOverflow

Как запускать внешние процессы, используя Python

Современные облачные сервисы, например, timeweb.cloud , стали сегодня обыденностью. Удалённый доступ и удалённое управление – основа современного цифрового мира. В нашей сегодняшней статье мы расскажем вам, как запускать внешние процессы при помощи различных модулей в Python 3 .

Для запуска внешних программ из Python, а также получения их ввода или вывода используется встроенный модуль subprocess . Данный модуль позволяет запускать и контролировать выполнение различных программ, которые доступны на компьютере.

Чтобы запустить программу с помощью модуля subprocess можно использовать несколько функций: subprocess.run (пришла на замену функции subprocess.call() в версии Python 3.5) и subprocess.Popen.

Синтаксис subprocess.run

subprocess.run(args, *, stdin, input, stdout, stderr, 
capture_output, shell, cwd, timeout,
check, encoding, errors, text, env,
universal_newlines)

Аргумент args – обязательный, через него передается запускаемая программа с аргументами.

Параметры stdin , input , stdout и stderr отвечают за потоки данных, которые передаются в процесс или выходят из него. Здесь stdout — поток вывода (результат работы), stderr — поток ошибок, которые возникли при выполнении. По умолчанию их значения — None.

capture_output — по умолчанию False, отвечает за захват результата работы процесса (вывода).

Параметр shell отвечает за способ передачи в процесс программы и ее аргументов — если они представлены как одна строка, следует указать True. По умолчанию False.

cwd — используется, если требуется указать абсолютный путь к каталогу с запускаемой программой.

timeout — время в секундах, по истечении которого процесс завершится. При этом возникает исключение.

check — если имеет значение True, то вызывает исключение, если во время выполнения возникли ошибки. По умолчанию False.

encoding — отвечает за декодирование вывода.

errors — если указан, то ошибки кодировки будут вызывать исключение.

text , universal_newlines — текстовые режимы для потоков ввода, вывода и ошибок. По умолчанию false.

env — переменные среды для нового процесса.

Функция возвращает объект CompletedProcess , содержащий результаты работы. С помощью специальных атрибутов можно получить из этого объекта переданные в функцию аргументы, код результата выполнения, вывод или возникшие ошибки. Работая с этой функцией, необходимо аккуратно работать с кодом из ненадёжных источников, потому что она может выполнять всё подряд, особенно в случае запуска от имени администратора.

Перед тем как рассматривать примеры, импортируем необходимые модули:

from subprocess import run, Popen, PIPE
from sys import executable
python import local file

Значение executable в Python — это абсолютный путь к исполняемому файлу интерпретатора Python. Оно потребуется для запуска кода.

Рассмотрим простой пример применения CompletedProcess .

run("echo 'Subprocesses are cool!", shell=True)
Subprocesses are cool!

Результатом работы будет объект:

CompletedProcess(args="echo 'Subprocesses are cool!", returncode=0)

Здесь мы видим переданные нами аргументы и статус выполнения ( returncode ). Когда статус выполнения равен нулю, это означает, что выполнение завершено успешно.

Рассмотрим сценарий сложнее. В предыдущем примере мы просто запустили внешний процесс и получили ответ, что он успешно выполнен. Но что если мы хотим получить не только статус выполнения, но и какие-то данные вывода? Для этого нам необходимо установить параметр capture_output = True :

run('ping localhost', shell = True, capture_output = True, encoding='cp866')

В этом примере мы отправляем запрос на localhost для проверки соединения. Параметр encoding указывает, что нам нужно декодировать результат, иначе мы получим его как байтовую строку.

Чтобы получить вывод программы и ошибки, выполним:

print("stdout:", result.stdout)
print("stderr:", result.stderr)

stdout:
Обмен пакетами с DESKTOP-*** [::1] с 32 байтами данных:
Ответ от ::1: времяОтвет от ::1: времяОтвет от ::1: времяОтвет от ::1: время
stderr:

В случае, если во время выполнения возникла какая-то ошибка, подпроцесс вернет ее в result.stderr . В данном случае ошибок не возникло.

Обработка исключений

Выполним следующий код:

run([executable, "-c", "raise ValueError('It seems there is a mistake!')"], capture_output=True, encoding='cp866')

Элемент -c – это опция командной строки python, позволяющая передавать на ввод целую программу.

Он сработает без проблем, однако если мы захотим вывести stdout , то увидим, что он пустой (в отличие от stderr ).

stdout:
stderr: Traceback (most recent call last):
File "", line 1, in
ValueError: It seems there is a mistake!

Если вызвать метод check_returncode , то мы увидим следующее:

CalledProcessError: Command '['D:\\***\\python.exe', '-c', "raise ValueError('It seems there is a mistake!')"]' returned non-zero exit status 1.

Мы получили ошибку. Для того, чтобы исключение возникало на этапе выполнения подпроцесса, необходимо указать параметр check = True .

В этом случае код не выполнится, и мы сразу будем знать, что в процессе возникла какая-то проблема.

Ограничение времени выполнения

Мы можем включить ограничение времени выполнения подпроцесса, чтобы программа, которая работает некорректно, не исполнялась бесконечно. Для этого используется параметр timeout :

run('ping yandex.ru', shell = True, timeout=5, capture_output = True, encoding='cp866')

В случае, если команда выполнилась, мы получим ее вывод:

Обмен пакетами с yandex.ru [77.88.55.50] с 32 байтами данных:
Ответ от 77.88.55.50: число байт=32 время=17мс TTL=56
Ответ от 77.88.55.50: число байт=32 время=17мс TTL=56
Ответ от 77.88.55.50: число байт=32 время=17мс TTL=56
Ответ от 77.88.55.50: число байт=32 время=17мс TTL=56

Если же наша команда не успела закончить выполнение за отведенное время, мы получаем исключение:

TimeoutExpired: Command 'ping yandex.ru' timed out after 1 seconds

С помощью подпроцессов мы также можем запускать установленные программы. Например:

run("notepad.exe")

Также мы можем передавать какой-либо ввод используя stdin и параметр input . Выполним код:

run([executable, "-c", "from sys import stdin; print(stdin.read())"], input="Hello subprocess!",capture_output=True, encoding='cp866')

В результате мы получим:

Hello subprocess!

Через Input можно передавать не только определенный текст, но и вывод программы.

Функция subprocess.run

Функция run модуля Subprocess является высокоуровневой. Если для нашей задачи требуется бо́льшая гибкость, то можно использовать напрямую класс Popen. Он имеет схожий синтаксис, однако у него есть несколько дополнительных параметров.

Создадим 2 подпроцесса. В первом мы получим содержимое папки, а с помощью второго выполним сортировку. Чтобы использовать вывод результата первого подпроцесса, мы указываем для него stdout=PIPE (это значение, которое можно использовать в качестве аргумента для stdin , stdout или stderr ).

Чтобы создать связь между двумя процессами, используется метод communicate() .

p1 = Popen('dir', shell=True, stdin=None, stdout=PIPE, stderr=PIPE)
p2 = Popen('sort /R', shell=True, stdin=p1.stdout)
p1.stdout.close()
out, err = p2.communicate()

Результатом работы этого кода будет вывод отсортированных файлов в папке:

21.03.2022 12:35 ..
21.03.2022 12:35 .
21.03.2022 12:35 256 test1.py
21.03.2022 12:34 255 test3.py
21.03.2022 12:21 247 test5.py
21.03.2022 12:21 247 test4.py
21.03.2022 12:21 247 test2.py
21.03.2022 12:21 247 test.py

Класс Popen имеет также несколько других полезных методов:

  • poll() — проверяет, завершён ли дочерний процесс. Возвращает либо код выполнения, либо None, если процесс еще выполняется.
  • wait(timeout=None) — ждет завершения дочернего процесса, если указан timeout, то завершается по истечению указанного времени и вызывает исключение TimeoutExpired .
  • terminate() — останавливает выполнение процесса.

Заключение

В сегодняшней статье мы рассмотрели, как, используя Python, запустить внешние процессы. Это стандартная возможность библиотеки Python, позволяющая запускать внешние программы и осуществлять вывод.

Python — от первого запуска до первой программы

Наверняка, вам уже надоела скучная теория о программировании на Python и хочется как можно скорее перейти к увлекательной практике.

Python — от первого запуска до первой программы

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

Во-первых, это совершенно безопасно, во-вторых, там есть вся необходимая информация по установке, и, в-третьих, на ресурсе будет доступна самая свежая версия.

Установка проходит по стандартной схеме:

  1. Качаем программу для своей ОС.
  2. Открываем загрузочный файл.
  3. Жмем «Install Now», проставляем все нужные галочки.
  4. Выбираем путь инсталляции.
  5. Жмем «Install» и ожидаем завершения установки.
  6. После окончания установочного процесса, запускаем файл .exe.

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

Что может быть проще?

Готовьтесь, сейчас вы создадите на Python твою первую простую, но зато рабочую программу! Что для этого потребуется?

Запустите интерпретатор, и мы сможем написать в нем ту самую знаменитую фразу «Hello, world!». Конечно, это элементарный уровень, но именно этот процесс и демонстрирует нам, как программа посредством языка Python получает команды, обрабатывает и выдает конечный результат.

Итак, пишем строку:

Python — от первого запуска до первой программы

Затем жмем на клавиатуре Enter и наслаждаемся полученным результатом в виде забавного приветствия:

Python — от первого запуска до первой программы

Наши аплодисменты! Это первый шаг на пути к знакомству с миром языка Python! Не будем останавливаться на достигнутом, и попробуем немного усложнить саму программу. К тому же, интерактивное отображение кода легко создается, читается и редактируется, но для того, чтобы сохранять прогресс в отдельном проекте, необходимо изначально работать с файлами.

Создаем текстовый документ, сохраняем его, переименовываем его так, как душе угодно. Но самое главное – не забываем приписать в конце названия расширение «.py» (сокращение от Python), иначе файл не будет открываться корректно.

Python — от первого запуска до первой программы

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

Python — от первого запуска до первой программы

  1. Выводится приветственный текст на монитор при помощи команды print.
  2. Выводится вопрос (в данном случае «Как тебя зовут?»), ожидание заполнения строки с именем пользователя (name) и нажатия клавиши Enter.
  3. С помощью функции print текст выводится на экран. В конкретной ситуации на экране появляется значение из переменной функции name и надпись «, добро пожаловать в мир Python!».
  4. Четвертая строка ожидает нажатия клавиши Enter для завершения программы.

Видите, ничего сложного в этом нет! Достаточно строго соблюдать логику, синтаксис, пробелы и знаки препинания, чтобы конечный результат нас по-настоящему порадовал. Но зачем сидеть не месте, если можно попробовать что-то более сложное?

Крестики-нолики

На первый взгляд может показаться, что это слишком простая задача. Но ведь это логическая игра, поэтому сама программа должна подчиняться определенной логике, в которой мы сейчас попробуем разобраться.

Что такое крестики-нолики? Это одна из самых популярных игр с полями 3 на 3 клетки, где не требуется никаких дополнительных атрибутов, вроде костей, фишек, карт и пр., лишь ручка и листок. В нашем же случае это будет монитор и командная строка или текстовый файл, например, Notepad++.

Первое, что необходимо сделать – это задать поле с числами от 1 до 9, а поможет нам в этом функция range.

Python — от первого запуска до первой программы

Для того, чтобы формат был для нас более понятным, мы напишем специальную функцию.

Python — от первого запуска до первой программы

Что же получится, если мы запустим этот код?

Python — от первого запуска до первой программы

Без введения данных эта игра превращается в статичную таблицу с числами, а нам нужен настоящий «экшн», так что внедряем в код функцию take_input.

Python — от первого запуска до первой программы

Как мы могли заметить, при команде take_input она создает параметр player_token (крестик/нолик), и это зависит от игрока, который должен сделать ход. Но важно, чтобы наша игра не вышла за пределы чисел 1 и 9, и поэтому мы должны воспользоваться конструкциями try/except и if/else, которые позволяют разобраться, использовалась ли уже данная область или нет. Также, стоит указать на один важный момент – функция take_input не вернула значений, а лишь заменила данный список board.

Теперь нам необходимо внедрить функцию, которая будет проверять поле нашей игры, которую можно обозначить как check_win, хотя вы можете придумать любое другое удобное для себя название.

Python — от первого запуска до первой программы

Опытные программисты прекрасно знают, что процесс проверки игры – это одна из самых популярных задач при обучении на курсах программирования. Главная её особенность в том, что 2 совершенно одинаковые задачи можно решить различными путями.

В нашем коде мы воспользовались кортежем (tuple) с координатами, по которым присуждается победа, и затем использовался цикл for, В том случае, если символы совпадали, то возвращался символ, соответствующий победе, в другом случае возвращалось значение False.

Не стоит забывать, что если строку, занятую победным символом, привести к логическому типу, то нам вернется True.

Теперь мы должны прописать функцию main, объединяющую в себе все функции, которые были описаны выше.

Python — от первого запуска до первой программы

В чем же суть функции main? Здесь всё довольно просто.

Если переменная counter будет >4, то совершенно нет необходимости вызывать check_win, ведь до 5 хода победа невозможна. Для такой же цели была создана tmp, и мы отметили её значение и применили в строке №48. Конечно, явных плюсов в таком подходе нет, но зато он может здорово «разгрузить» системный процессов при обработке более крупных объемов информации.

Ну, что, перейдем к самой игре с помощью main(board)?

Python — от первого запуска до первой программы

Если у вас возникли проблемы с отображением кириллических символов, то добавьте эту строку в самом верху кода.

Понравилось создавать программы и игры собственными руками? Тогда приходите на наш курс Python-разработчик. Здесь вы узнаете, что профессия программиста требует не только аналитического, но и творческого подхода. Опыт лучших педагогов, оснащенные классы, приятные акции и самые свежие знания – всё это Школа Бруноям!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *