base64.md
1> **Источник:** https://python-all.ru/3.4/library/base64.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 19.6. [`base64`](https://python-all.ru/3.4/library/base64.html#module-base64) – кодировки Base16, Base32, Base64, Base8589Этот модуль предоставляет функции для кодирования двоичных данных в печатаемые символы ASCII и декодирования таких кодировок обратно в двоичные данные. Он предоставляет функции кодирования и декодирования для кодировок, указанных в [**RFC 3548**](https://python-all.ru/3.4/library/base64.html), который определяет алгоритмы Base16, Base32 и Base64, а также для кодировок Ascii85 и Base85, являющихся стандартом де-факто.1011Кодировки [**RFC 3548**](https://python-all.ru/3.4/library/base64.html) подходят для кодирования двоичных данных, чтобы их можно было безопасно отправлять по электронной почте, использовать как части URL или включать в HTTP POST-запросы. Алгоритм кодирования не совпадает с программой **uuencode**.1213Этот модуль предоставляет два интерфейса [**RFC 3548**](https://python-all.ru/3.4/library/base64.html). Современный интерфейс поддерживает кодирование и декодирование объектов ASCII-байтовых строк, используя все три алфавита, определённые в [**RFC 3548**](https://python-all.ru/3.4/library/base64.html) (обычный, безопасный для URL и безопасный для файловой системы). Кроме того, функции декодирования современного интерфейса также принимают строки Unicode, содержащие только ASCII-символы. Устаревший интерфейс обеспечивает кодирование и декодирование как в файлоподобные объекты, так и в байтовые строки, но только с использованием стандартного алфавита Base64.1415Изменено в версии 3.3: Теперь функции декодирования современного интерфейса принимают строки Unicode, содержащие только ASCII.1617Изменено в версии 3.4: Теперь все функции кодирования и декодирования в этом модуле принимают любые [*bytes-like object*](https://python-all.ru/3.4/glossary.html#term-bytes-like-object). Добавлена поддержка Ascii85/Base85.1819Современный интерфейс предоставляет:2021#### `base64.b64encode(s, altchars=None)`2223Кодирует байтовую строку в Base64.2425*s* – строка для кодирования. Необязательный аргумент *altchars* должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит для символов `+` и `/`. Это позволяет, например, генерировать строки Base64, безопасные для URL или файловой системы. По умолчанию используется `None`, при этом применяется стандартный алфавит Base64.2627Возвращается закодированная байтовая строка.2829#### `base64.b64decode(s, altchars=None, validate=False)`3031Декодирует байтовую строку, закодированную в Base64.3233*s* – байтовая строка для декодирования. Необязательный аргумент *altchars* должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит, используемый вместо символов `+` и `/`.3435Возвращается декодированная строка. Исключение [`binascii.Error`](https://python-all.ru/3.4/library/binascii.html#binascii.Error) возбуждается, если *s* имеет неправильное дополнение.3637Если *validate* равен `False` (по умолчанию), символы, не входящие в алфавит base64, отбрасываются перед проверкой дополнения. Если *validate* равен `True`, символы, не входящие в алфавит base64, во входных данных приводят к [`binascii.Error`](https://python-all.ru/3.4/library/binascii.html#binascii.Error).3839#### `base64.standard_b64encode(s)`4041Кодирует байтовую строку *s* с использованием стандартного алфавита Base64.4243#### `base64.standard_b64decode(s)`4445Декодирует байтовую строку *s* с использованием стандартного алфавита Base64.4647#### `base64.urlsafe_b64encode(s)`4849Кодирует байтовую строку *s*, используя безопасный для URL алфавит, который заменяет `-` вместо `+` и `_` вместо `/` в стандартном алфавите Base64. Результат всё ещё может содержать `=`.5051#### `base64.urlsafe_b64decode(s)`5253Декодирует байтовую строку *s*, используя безопасный для URL алфавит, который заменяет `-` вместо `+` и `_` вместо `/` в стандартном алфавите Base64.5455#### `base64.b32encode(s)`5657Кодирует байтовую строку с использованием Base32. *s* – строка для кодирования. Возвращается закодированная строка.5859#### `base64.b32decode(s, casefold=False, map01=None)`6061Декодирует байтовую строку, закодированную в Base32.6263*s* – байтовая строка для декодирования. Необязательный аргумент *casefold* – флаг, указывающий, допустим ли строчный алфавит на входе. В целях безопасности по умолчанию используется `False`.6465[**RFC 3548**](https://python-all.ru/3.4/library/base64.html) допускает необязательное отображение цифры 0 (ноль) на букву O (о) и необязательное отображение цифры 1 (один) на букву I (ай) или букву L (эл). Необязательный аргумент *map01*, если он не равен `None`, указывает, на какую букву должна отображаться цифра 1 (когда *map01* не равен `None`, цифра 0 всегда отображается на букву O). В целях безопасности по умолчанию используется `None`, чтобы 0 и 1 не допускались во входных данных.6667Возвращается декодированная байтовая строка. Исключение [`binascii.Error`](https://python-all.ru/3.4/library/binascii.html#binascii.Error) возбуждается, если *s* имеет неправильное дополнение или если в строке присутствуют символы, не входящие в алфавит.6869#### `base64.b16encode(s)`7071Кодирует байтовую строку с использованием Base16.7273*s* – строка для кодирования. Возвращается закодированная байтовая строка.7475#### `base64.b16decode(s, casefold=False)`7677Декодировать строку байтов, закодированную в Base16.7879*s* – декодируемая строка. Необязательный параметр *casefold* – флаг, указывающий, допустим ли алфавит в нижнем регистре на входе. Из соображений безопасности по умолчанию `False`.8081Возвращается декодированная строка байтов. Если *s* дополнена неправильно или в строке есть символы, не входящие в алфавит, возбуждается [`TypeError`](https://python-all.ru/3.4/library/exceptions.html#TypeError).8283#### `base64.a85encode(s, *, foldspaces=False, wrapcol=0, pad=False, adobe=False)`8485Закодировать строку байтов с помощью Ascii85.8687*s* – кодируемая строка. Возвращается закодированная строка байтов.8889*foldspaces* – необязательный флаг, который использует специальную короткую последовательность 'y' вместо 4 последовательных пробелов (ASCII 0x20), как поддерживается в 'btoa'. Эта возможность не поддерживается «стандартной» кодировкой Ascii85.9091*wrapcol* определяет, нужно ли добавлять символы новой строки (`'\n'`) в вывод. Если значение не равно нулю, каждая строка вывода будет не длиннее этого числа символов.9293*pad* определяет, дополняется ли входная строка до длины, кратной 4, перед кодированием. Обратите внимание, что реализация `btoa` всегда выполняет дополнение.9495*adobe* управляет тем, обрамляется ли закодированная последовательность байтов `<~` и `~>`, что используется в реализации Adobe.9697Новое в версии 3.4.9899#### `base64.a85decode(s, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\v')`100101Декодировать строку байтов, закодированную Ascii85.102103*s* – декодируемая строка байтов.104105*foldspaces* – это флаг, указывающий, следует ли принимать короткую последовательность 'y' в качестве сокращения для 4 последовательных пробелов (ASCII 0x20). Эта возможность не поддерживается «стандартной» кодировкой Ascii85.106107*adobe* управляет тем, находится ли входная последовательность в формате Adobe Ascii85 (т.е. обрамляется с помощью \<~ и ~\>).108109*ignorechars* должен быть байтовой строкой, содержащей символы, которые следует игнорировать во входных данных. Она должна содержать только пробельные символы и по умолчанию включает все пробельные символы ASCII.110111Новое в версии 3.4.112113#### `base64.b85encode(s, pad=False)`114115Закодировать строку байтов с помощью base85, как используется, например, в бинарных сравнениях в стиле git.116117Если *pad* равен истине, входная строка дополняется нулевыми символами («\\0»), чтобы её длина стала кратна 4 символам перед кодированием.118119Новое в версии 3.4.120121#### `base64.b85decode(b)`122123Декодировать строку байтов, закодированную base85. При необходимости дополнение неявно удаляется.124125Новое в версии 3.4.126127> **Примечание**128>129> И Base85, и Ascii85 имеют коэффициент расширения 5 к 4 (5 символов Base85 или Ascii85 могут закодировать 4 двоичных байта), в то время как более известный Base64 имеет коэффициент расширения 6 к 4. Поэтому они более эффективны, когда пространство дорого. Они различаются деталями, такими как используемая таблица символов для кодирования.130131Устаревший интерфейс:132133#### `base64.decode(input, output)`134135Декодировать содержимое бинарного файла *input* и записать полученные бинарные данные в файл *output*. *input* и *output* должны быть [*файловыми объектами*](https://python-all.ru/3.4/glossary.html#term-file-object). Чтение из *input* продолжается, пока `input.read()` не вернёт пустой объект bytes.136137#### `base64.decodebytes(s)`138139#### `base64.decodestring(s)`140141Декодировать строку байтов *s*, которая должна содержать одну или более строк данных, закодированных base64, и вернуть строку байтов с полученными бинарными данными. `decodestring` – устаревший псевдоним.142143Новое в версии 3.1.144145#### `base64.encode(input, output)`146147Закодировать содержимое бинарного файла *input* и записать полученные данные в кодировке base64 в файл *output*. *input* и *output* должны быть [*файловыми объектами*](https://python-all.ru/3.4/glossary.html#term-file-object). Чтение из *input* продолжается, пока `input.read()` не вернёт пустой объект bytes. [`encode()`](https://python-all.ru/3.4/library/base64.html#base64.encode) возвращает закодированные данные с добавленным символом новой строки (`b'\n'`) в конце.148149#### `base64.encodebytes(s)`150151#### `base64.encodestring(s)`152153Закодировать строку байтов *s*, которая может содержать произвольные бинарные данные, и вернуть строку байтов, содержащую одну или более строк данных в кодировке base64. [`encodebytes()`](https://python-all.ru/3.4/library/base64.html#base64.encodebytes) возвращает строку, содержащую одну или более строк данных в кодировке base64, всегда включая дополнительный завершающий символ новой строки (`b'\n'`). `encodestring` – устаревший псевдоним.154155Пример использования модуля:156157```python158>>> import base64159>>> encoded = base64.b64encode(b'data to be encoded')160>>> encoded161b'ZGF0YSB0byBiZSBlbmNvZGVk'162>>> data = base64.b64decode(encoded)163>>> data164b'data to be encoded'165```166167> **См. также**168>169> **Модуль [`binascii`](https://python-all.ru/3.4/library/binascii.html#module-binascii)**170>171> Вспомогательный модуль, содержащий преобразования ASCII-в-двоичный и двоичный-в-ASCII.172>173> **[**RFC 1521**](https://python-all.ru/3.4/library/base64.html) – MIME (Многоцелевые расширения интернет-почты) Часть 1: Механизмы указания и описания формата тел интернет-сообщений**174>175> Раздел 5.2, «Base64 Content-Transfer-Encoding», содержит определение кодировки base64.176