все 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Сообщить о неточности