> **Источник:** https://python-all.ru/3.0/library/quopri.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `quopri` – Кодирование и декодирование MIME quoted-printable данных

Этот модуль выполняет транспортное кодирование и декодирование в формате quoted-printable, как определено в [**RFC 1521**](https://python-all.ru/3.0/library/quopri.html): «MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies». Кодирование quoted-printable предназначено для данных, в которых относительно мало непечатаемых символов; схема кодирования base64, доступная через модуль [`base64`](https://python-all.ru/3.0/library/base64.html#module-base64), является более компактной при наличии большого количества таких символов, например при отправке графического файла.

#### `[quopri.decode]quopri.decode(input, output[, header])`

Декодирует содержимое файла

*input*

и записывает полученные декодированные двоичные данные в файл

*output*

.

*input*

и

*output*

должны быть файловыми объектами или объектами, имитирующими интерфейс файлового объекта.

*input*

будет читаться, пока

`input.readline()`

не вернёт пустую строку. Если необязательный аргумент

*header*

присутствует и равен true, символ подчёркивания будет декодирован как пробел. Это используется для декодирования заголовков, закодированных в формате Q, как описано в

[**RFC 1522**](https://python-all.ru/3.0/library/quopri.html)

: «MIME (Multipurpose Internet Mail Extensions) Part Two: Message Header Extensions for Non-ASCII Text».

#### `[quopri.encode]quopri.encode(input, output, quotetabs)`

Кодирует содержимое файла

*input*

и записывает полученные quoted-printable данные в файл

*output*

.

*input*

и

*output*

должны быть файловыми объектами или объектами, имитирующими интерфейс файлового объекта.

*input*

будет читаться, пока

`input.readline()`

не вернёт пустую строку.

*quotetabs*

– это флаг, который управляет кодированием встроенных пробелов и табуляций; если true, он кодирует такие встроенные пробельные символы, а если false – оставляет их без кодирования. Обратите внимание, что пробелы и табуляции в конце строк всегда кодируются, как указано в

[**RFC 1521**](https://python-all.ru/3.0/library/quopri.html)

.

#### `[quopri.decodestring]quopri.decodestring(s[, header])`

Как и

[`decode()`](https://python-all.ru/3.0/library/quopri.html#quopri.decode)

, за исключением того, что принимает исходную строку и возвращает соответствующую декодированную строку.

#### `[quopri.encodestring]quopri.encodestring(s[, quotetabs])`

Подобна

[`encode()`](https://python-all.ru/3.0/library/quopri.html#quopri.encode)

, за исключением того, что принимает исходную строку и возвращает соответствующую закодированную строку.

*quotetabs*

необязателен (по умолчанию 0) и передается напрямую в

[`encode()`](https://python-all.ru/3.0/library/quopri.html#quopri.encode)

.

> **См. также**
>
> **Модуль [`base64`](https://python-all.ru/3.0/library/base64.html#module-base64)**
>
> Кодирование и декодирование данных base64 MIME
