Запуск приложений ОС из сценария на click в Python
Модуль click поддерживает запуск приложений ОС через функцию click.launch() . Это поведение можно использовать для открытия приложения по умолчанию, связанного с URL-адресом или типом (расширением) файла, например, для запуска веб-браузеров или программ просмотра изображений.
В дополнение к этому, функцию click.launch() может запускать файловый менеджер и автоматически выбирать предоставленный файл.
>>> import click # откроем заданный URL-адрес # в браузере по умолчанию >>> click.launch("https://click.palletsprojects.com/") # откроет указанный файл в связанном # приложении в данном случае откроет файл # в текстовом редакторе по умолчанию click.launch("/test/file.txt")
Если функцию передать аргумент wait=True , то функция будет дождаться завершения запущенной программы ОС. Это работает, только если запущенная программа блокируется. В частности, в Linux xdg-open не блокирует программы.
Если для аргумента locate установлено значение True , то вместо запуска связанного приложения, click.launch() попытается запустить файловый менеджер с обнаруженным файлом. Такое поведение может иметь странные эффекты, если вместо файла указан URL-адрес.
# откроет файловый менеджер click.launch("/test/file.txt", locate=True)
Пользовательский многострочный ввод для сценария командной строки.
Модуль click может автоматически запустить указанный редактор кода или текста через функцию click.edit() . Такое поведение очень полезно для запроса у пользователей многострочного ввода.
Функция click.edit() автоматически откроет редактор, определенный в аргументе editor , или если он не указан, предоставит пользователю выбрать его. Если пользователь закрывает редактор без сохранения, то возвращаемое значение будет None , в противном случае, это будет введенный текст.
# откроет редактор nano и добавит строку, # 'import click' при выходе из редактора с # сохранением, возвратит набранный текст >>> click.edit('import click', editor='nano') # 'import click\n\nclick.edit()\n'
Пример функции обертки:
import click def get_commit_message(): MARKER = '# Все, что ниже, игнорируется\n' message = click.edit('\n\n' + MARKER) if message is not None: return message.split(MARKER, 1)[0].rstrip('\n')
Кроме того, click.edit() можно использовать для запуска редакторов для файлов с определенным именем. В этом случае возвращаемое значение всегда будет None .
>>> import click # откроет файл 'test.py' в IDE 'Code' >>> click.edit(editor='code', filename='test.py')
Синтаксис и описание аргументов.
click.edit(text=None, editor=None, env=None, require_save=True, extension='.txt', filename=None)
Описание аргументов функции click.edit() :
- text : ( str ) — текст для редактирования.
- editor : (str ) — используемый редактор. По умолчанию автоматическое обнаружение.
- env : ( dict ) — переменные среды для передачи редактору.
- require_save : ( bool ) — если True , то при отсутствии сохранения в редакторе, возвращаемое значение будет None .
- extension : ( str ) — расширение, о котором нужно сообщить редактору. По умолчанию это .txt .
- filename : ( str ) — если указан, то будет редактировать этот файл вместо указанного текста в аргументе text . В этом случае редактор не будет использовать временный файл в качестве косвенного адреса.
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Интеграция модуля click с setuptools
- Cтиль и цвета при выводе текста в терминал, модуль click
- Опции сценария командной строки модуля click
- Позиционные параметры командной строки модуля click
- Встроенные типы опций и параметров модуля click
- Произвольное вложение команд в сценариях модуля click
- Запрос на ввод данных, подтверждение действий в сценариях модуля click
- Настройка страницы справки сценария на click
- Индикатор выполнения для модуля click
- Прокрутка длинного текста в терминале с модулем click
- Ожидание нажатия клавиши в сценарии click
- Запуск приложений ОС из сценария на click
Как с помощью python открыть приложение
Для запуска любой внешней команды или программы под python используется os.system(«path/to/program»)
import os os.system('/usr/bin/firefox')
Выше приведенный пример здорово работает если только в пути нету пробелов (например, ‘Mozilla Firefox’).
Для того, что бы командная оболочка правильно трактовала имена с пробелами необходимо их экранировать в кавычки, например так:
import os os.system(r'c:/"Program Files"/"Mozilla Firefox"/firefox.exe')
Если не знать как правильно передать путь в os.system то можно долго провозится, ломая голову почему оно не хочет запускать программы.
Для упрощения запуска команд, в пути которых есть пробелы, существует os.startfile:
import os os.startfile(r'c:/Program Files/Mozilla Firefox/firefox.exe')
os.startfile принимает простой текст, без необходимости заключать в кавычки имена папок с пробелами.
Еще два варианта (источник), каждый хорош в своем случаи
import subprocess import shlex cmd = 'ls -al' args = shlex.split(cmd) p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) result = p.communicate()[0]
import commands commands.getoutput('ls -la')
Начиная с версии 3 и выше запуск рекомендуется производить через subprocess.
import subprocess proc = subprocess.Popen("ping -c2 %s" % ip, shell=True, stdout=subprocess.PIPE) out = proc.stdout.readlines() # или out = proc.communicate()
Запуск приложения через 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
Программа на 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)
