Документация Python неофициальный перевод

19.6. base64 – RFC 3548: Base16, Base32, Base64 кодирование данныхbase64 – RFC 3548: Base16, Base32, Base64 Data Encodings

Этот модуль предоставляет кодирование и декодирование данных, как указано в RFC 3548. Этот стандарт определяет алгоритмы Base16, Base32 и Base64 для кодирования и декодирования произвольных двоичных строк в строки байтов, состоящие только из ASCII, которые можно безопасно отправлять по электронной почте, использовать как части URL или включать как часть HTTP POST-запроса. Алгоритм кодирования не совпадает с программой uuencode.

Этот модуль предоставляет два интерфейса. Современный интерфейс поддерживает кодирование и декодирование объектов байтовых строк ASCII с использованием всех трёх алфавитов. Кроме того, функции декодирования современного интерфейса также принимают строки Unicode, содержащие только символы ASCII. Устаревший интерфейс предоставляет кодирование и декодирование для файлоподобных объектов, а также байтовых строк, но только с использованием стандартного алфавита Base64.

Изменено в версии 3.3: Теперь функции декодирования современного интерфейса принимают строки Unicode, содержащие только ASCII.

Современный интерфейс предоставляет:

base64.b64encode(s, altchars=None)

Кодирует байтовую строку в Base64.

s – строка для кодирования. Необязательный аргумент altchars должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит для символов + и /. Это позволяет, например, генерировать строки Base64, безопасные для URL или файловой системы. По умолчанию используется None, при этом применяется стандартный алфавит Base64.

Возвращается закодированная байтовая строка.

base64.b64decode(s, altchars=None, validate=False)

Декодирует байтовую строку, закодированную в Base64.

s – байтовая строка для декодирования. Необязательный аргумент altchars должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит, используемый вместо символов + и /.

Возвращается декодированная строка. Исключение binascii.Error возбуждается, если s имеет неправильное дополнение.

Если validate равен False (по умолчанию), символы, не входящие в алфавит base64, отбрасываются перед проверкой дополнения. Если validate равен True, символы, не входящие в алфавит base64, во входных данных приводят к binascii.Error.

base64.standard_b64encode(s)

Кодирует байтовую строку s с использованием стандартного алфавита Base64.

base64.standard_b64decode(s)

Декодирует байтовую строку s с использованием стандартного алфавита Base64.

base64.urlsafe_b64encode(s)

Кодирует байтовую строку s, используя безопасный для URL алфавит, который заменяет - вместо + и _ вместо / в стандартном алфавите Base64. Результат всё ещё может содержать =.

base64.urlsafe_b64decode(s)

Декодирует байтовую строку s, используя безопасный для URL алфавит, который заменяет - вместо + и _ вместо / в стандартном алфавите Base64.

base64.b32encode(s)

Кодирует байтовую строку с использованием Base32. s – строка для кодирования. Возвращается закодированная строка.

base64.b32decode(s, casefold=False, map01=None)

Декодирует байтовую строку, закодированную в Base32.

s – байтовая строка для декодирования. Необязательный аргумент casefold – флаг, указывающий, допустим ли строчный алфавит на входе. В целях безопасности по умолчанию используется False.

RFC 3548 допускает необязательное отображение цифры 0 (ноль) на букву O (о) и необязательное отображение цифры 1 (один) на букву I (ай) или букву L (эл). Необязательный аргумент map01, если он не равен None, указывает, на какую букву должна отображаться цифра 1 (когда map01 не равен None, цифра 0 всегда отображается на букву O). В целях безопасности по умолчанию используется None, чтобы 0 и 1 не допускались во входных данных.

Возвращается декодированная байтовая строка. Исключение binascii.Error возбуждается, если s имеет неправильное дополнение или если в строке присутствуют символы, не входящие в алфавит.

base64.b16encode(s)

Кодирует байтовую строку с использованием Base16.

s – строка для кодирования. Возвращается закодированная байтовая строка.

base64.b16decode(s, casefold=False)

Декодировать строку байтов, закодированную в Base16.

s – декодируемая строка. Необязательный параметр casefold – флаг, указывающий, допустим ли алфавит в нижнем регистре на входе. Из соображений безопасности по умолчанию False.

Возвращается декодированная строка байтов. Если s дополнена неправильно или в строке есть символы, не входящие в алфавит, возбуждается TypeError.

Устаревший интерфейс:

base64.decode(input, output)

Декодировать содержимое бинарного файла input и записать полученные бинарные данные в файл output. input и output должны быть файловыми объектами. Чтение из input продолжается, пока input.read() не вернёт пустой объект bytes.

base64.decodebytes(s)
base64.decodestring(s)

Декодировать строку байтов s, которая должна содержать одну или более строк данных, закодированных base64, и вернуть строку байтов с полученными бинарными данными. decodestring – устаревший псевдоним.

Новое в версии 3.1.

base64.encode(input, output)

Закодировать содержимое бинарного файла input и записать полученные данные в кодировке base64 в файл output. input и output должны быть файловыми объектами. Чтение из input продолжается, пока input.read() не вернёт пустой объект bytes. encode() возвращает закодированные данные с добавленным символом новой строки (b'\n') в конце.

base64.encodebytes(s)
base64.encodestring(s)

Закодировать строку байтов s, которая может содержать произвольные бинарные данные, и вернуть строку байтов, содержащую одну или более строк данных в кодировке base64. encodebytes() возвращает строку, содержащую одну или более строк данных в кодировке base64, всегда включая дополнительный завершающий символ новой строки (b'\n'). encodestring – устаревший псевдоним.

Пример использования модуля:

>>> import base64
>>> encoded = base64.b64encode(b'data to be encoded')
>>> encoded
b'ZGF0YSB0byBiZSBlbmNvZGVk'
>>> data = base64.b64decode(encoded)
>>> data
b'data to be encoded'

См. также

Модуль binascii
Вспомогательный модуль, содержащий преобразования ASCII-в-двоичный и двоичный-в-ASCII.
RFC 1521 – MIME (Многоцелевые расширения интернет-почты) Часть 1: Механизмы указания и описания формата тел интернет-сообщений
Раздел 5.2, «Base64 Content-Transfer-Encoding», содержит определение кодировки base64.