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

base64.md

124 строк · 11.8 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.3/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.3/library/base64.html#module-base64) – RFC 3548: Base16, Base32, Base64 кодирование данных89Этот модуль предоставляет кодирование и декодирование данных, как указано в [**RFC 3548**](https://python-all.ru/3.3/library/base64.html). Этот стандарт определяет алгоритмы Base16, Base32 и Base64 для кодирования и декодирования произвольных двоичных строк в строки байтов, состоящие только из ASCII, которые можно безопасно отправлять по электронной почте, использовать как части URL или включать как часть HTTP POST-запроса. Алгоритм кодирования не совпадает с программой **uuencode**.1011Этот модуль предоставляет два интерфейса. Современный интерфейс поддерживает кодирование и декодирование объектов байтовых строк ASCII с использованием всех трёх алфавитов. Кроме того, функции декодирования современного интерфейса также принимают строки Unicode, содержащие только символы ASCII. Устаревший интерфейс предоставляет кодирование и декодирование для файлоподобных объектов, а также байтовых строк, но только с использованием стандартного алфавита Base64.1213Изменено в версии 3.3: Теперь функции декодирования современного интерфейса принимают строки Unicode, содержащие только ASCII.1415Современный интерфейс предоставляет:1617#### `base64.b64encode(s, altchars=None)`1819Кодирует байтовую строку в Base64.2021*s* – строка для кодирования. Необязательный аргумент *altchars* должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит для символов `+` и `/`. Это позволяет, например, генерировать строки Base64, безопасные для URL или файловой системы. По умолчанию используется `None`, при этом применяется стандартный алфавит Base64.2223Возвращается закодированная байтовая строка.2425#### `base64.b64decode(s, altchars=None, validate=False)`2627Декодирует байтовую строку, закодированную в Base64.2829*s* – байтовая строка для декодирования. Необязательный аргумент *altchars* должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит, используемый вместо символов `+` и `/`.3031Возвращается декодированная строка. Исключение [`binascii.Error`](https://python-all.ru/3.3/library/binascii.html#binascii.Error) возбуждается, если *s* имеет неправильное дополнение.3233Если *validate* равен `False` (по умолчанию), символы, не входящие в алфавит base64, отбрасываются перед проверкой дополнения. Если *validate* равен `True`, символы, не входящие в алфавит base64, во входных данных приводят к [`binascii.Error`](https://python-all.ru/3.3/library/binascii.html#binascii.Error).3435#### `base64.standard_b64encode(s)`3637Кодирует байтовую строку *s* с использованием стандартного алфавита Base64.3839#### `base64.standard_b64decode(s)`4041Декодирует байтовую строку *s* с использованием стандартного алфавита Base64.4243#### `base64.urlsafe_b64encode(s)`4445Кодирует байтовую строку *s*, используя безопасный для URL алфавит, который заменяет `-` вместо `+` и `_` вместо `/` в стандартном алфавите Base64. Результат всё ещё может содержать `=`.4647#### `base64.urlsafe_b64decode(s)`4849Декодирует байтовую строку *s*, используя безопасный для URL алфавит, который заменяет `-` вместо `+` и `_` вместо `/` в стандартном алфавите Base64.5051#### `base64.b32encode(s)`5253Кодирует байтовую строку с использованием Base32. *s* – строка для кодирования. Возвращается закодированная строка.5455#### `base64.b32decode(s, casefold=False, map01=None)`5657Декодирует байтовую строку, закодированную в Base32.5859*s* – байтовая строка для декодирования. Необязательный аргумент *casefold* – флаг, указывающий, допустим ли строчный алфавит на входе. В целях безопасности по умолчанию используется `False`.6061[**RFC 3548**](https://python-all.ru/3.3/library/base64.html) допускает необязательное отображение цифры 0 (ноль) на букву O (о) и необязательное отображение цифры 1 (один) на букву I (ай) или букву L (эл). Необязательный аргумент *map01*, если он не равен `None`, указывает, на какую букву должна отображаться цифра 1 (когда *map01* не равен `None`, цифра 0 всегда отображается на букву O). В целях безопасности по умолчанию используется `None`, чтобы 0 и 1 не допускались во входных данных.6263Возвращается декодированная байтовая строка. Исключение [`binascii.Error`](https://python-all.ru/3.3/library/binascii.html#binascii.Error) возбуждается, если *s* имеет неправильное дополнение или если в строке присутствуют символы, не входящие в алфавит.6465#### `base64.b16encode(s)`6667Кодирует байтовую строку с использованием Base16.6869*s* – строка для кодирования. Возвращается закодированная байтовая строка.7071#### `base64.b16decode(s, casefold=False)`7273Декодировать строку байтов, закодированную в Base16.7475*s* – декодируемая строка. Необязательный параметр *casefold* – флаг, указывающий, допустим ли алфавит в нижнем регистре на входе. Из соображений безопасности по умолчанию `False`.7677Возвращается декодированная строка байтов. Если *s* дополнена неправильно или в строке есть символы, не входящие в алфавит, возбуждается [`TypeError`](https://python-all.ru/3.3/library/exceptions.html#TypeError).7879Устаревший интерфейс:8081#### `base64.decode(input, output)`8283Декодировать содержимое бинарного файла *input* и записать полученные бинарные данные в файл *output*. *input* и *output* должны быть [*файловыми объектами*](https://python-all.ru/3.3/glossary.html#term-file-object). Чтение из *input* продолжается, пока `input.read()` не вернёт пустой объект bytes.8485#### `base64.decodebytes(s)`8687#### `base64.decodestring(s)`8889Декодировать строку байтов *s*, которая должна содержать одну или более строк данных, закодированных base64, и вернуть строку байтов с полученными бинарными данными. `decodestring` – устаревший псевдоним.9091Новое в версии 3.1.9293#### `base64.encode(input, output)`9495Закодировать содержимое бинарного файла *input* и записать полученные данные в кодировке base64 в файл *output*. *input* и *output* должны быть [*файловыми объектами*](https://python-all.ru/3.3/glossary.html#term-file-object). Чтение из *input* продолжается, пока `input.read()` не вернёт пустой объект bytes. [`encode()`](https://python-all.ru/3.3/library/base64.html#base64.encode) возвращает закодированные данные с добавленным символом новой строки (`b'\n'`) в конце.9697#### `base64.encodebytes(s)`9899#### `base64.encodestring(s)`100101Закодировать строку байтов *s*, которая может содержать произвольные бинарные данные, и вернуть строку байтов, содержащую одну или более строк данных в кодировке base64. [`encodebytes()`](https://python-all.ru/3.3/library/base64.html#base64.encodebytes) возвращает строку, содержащую одну или более строк данных в кодировке base64, всегда включая дополнительный завершающий символ новой строки (`b'\n'`). `encodestring` – устаревший псевдоним.102103Пример использования модуля:104105```python106>>> import base64107>>> encoded = base64.b64encode(b'data to be encoded')108>>> encoded109b'ZGF0YSB0byBiZSBlbmNvZGVk'110>>> data = base64.b64decode(encoded)111>>> data112b'data to be encoded'113```114115> **См. также**116>117> **Модуль [`binascii`](https://python-all.ru/3.3/library/binascii.html#module-binascii)**118>119> Вспомогательный модуль, содержащий преобразования ASCII-в-двоичный и двоичный-в-ASCII.120>121> **[**RFC 1521**](https://python-all.ru/3.3/library/base64.html) – MIME (Многоцелевые расширения интернет-почты) Часть 1: Механизмы указания и описания формата тел интернет-сообщений**122>123> Раздел 5.2, «Base64 Content-Transfer-Encoding», содержит определение кодировки base64.124