Python Glossary English

все Python 3до 3.13Удалено из стандартной библиотекипонятие

mailcap

удалённые модули

Чтение файлов mailcap: какой программой открыть данный MIME-тип. Удалён в Python 3.13 — для типов используйте mimetypes.

Синтаксис

import mailcap  # до 3.13

mailcap.getcaps() собирал правила из ~/.mailcap и /etc/mailcap, а mailcap.findmatch(caps, 'image/png', filename=...) возвращал команду вроде 'display photo.png'. Убран по PEP 594: формат пришёл из почтовых клиентов Unix 90-х, а подстановка имени файла в команду оборачивалась уязвимостью. Как переписать: тип файла по имени определяет mimetypes.guess_type(), расширение по типу — mimetypes.guess_extension(); открыть файл программой по умолчанию — os.startfile() на Windows или subprocess.run(['xdg-open', путь]) на Linux и ['open', путь] на macOS. Пакет standard-mailcap на PyPI возвращает модуль.

Примеры

# Python 3.13+
try:
    import mailcap
except ModuleNotFoundError as e:
    print(type(e).__name__)  # → ModuleNotFoundError
# Python 3.13+
import mimetypes
print(mimetypes.guess_type('photo.png'))  # → ('image/png', None)
print(mimetypes.guess_extension('application/pdf'))  # → .pdf
import mailcap
caps = {'image/png': [{'view': 'display %s'}]}
command, entry = mailcap.findmatch(caps, 'image/png', filename='photo.png')
print(command)  # → display photo.png

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности