Сообщить об ошибке.

Запуск приложений ОС из сценария на 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. В этом случае редактор не будет использовать временный файл в качестве косвенного адреса.