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