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

base64.md

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

1> **Источник:** https://python-all.ru/3.1/library/base64.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 18.6. `base64` – RFC 3548: кодировки Base16, Base32, Base6489Этот модуль предоставляет кодирование и декодирование данных, как указано в [**RFC 3548**](https://python-all.ru/3.1/library/base64.html). Этот стандарт определяет алгоритмы Base16, Base32 и Base64 для кодирования и декодирования произвольных двоичных строк в строки байтов, состоящие только из ASCII, которые можно безопасно отправлять по электронной почте, использовать как части URL или включать как часть HTTP POST-запроса. Алгоритм кодирования не совпадает с программой **uuencode**.1011Этот модуль предоставляет два интерфейса. Современный интерфейс поддерживает кодирование и декодирование ASCII-байтовых строк с использованием всех трёх алфавитов. Устаревший интерфейс обеспечивает кодирование и декодирование в объекты, подобные файлам, и обратно, а также байтовые строки, но использует только стандартный алфавит Base64.1213Современный интерфейс предоставляет:1415#### `base64.b64encode(s, altchars=None)`1617Кодирует байтовую строку в Base64.1819*s* – строка для кодирования. Необязательный аргумент *altchars* должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит для символов `+` и `/`. Это позволяет, например, генерировать строки Base64, безопасные для URL или файловой системы. По умолчанию используется `None`, при этом применяется стандартный алфавит Base64.2021Возвращается закодированная байтовая строка.2223#### `base64.b64decode(s, altchars=None)`2425Декодирует байтовую строку, закодированную в Base64.2627*s* – байтовая строка для декодирования. Необязательный аргумент *altchars* должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит, используемый вместо символов `+` и `/`.2829Возвращается декодированная строка байтов. Если *s* дополнена неправильно или в строке есть символы, не входящие в алфавит, возбуждается [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError).3031#### `base64.standard_b64encode(s)`3233Кодирует байтовую строку3435*s*3637с использованием стандартного алфавита Base64.3839#### `base64.standard_b64decode(s)`4041Декодирует байтовую строку4243*s*4445с использованием стандартного алфавита Base64.4647#### `base64.urlsafe_b64encode(s)`4849Кодирует байтовую строку5051*s*5253, используя безопасный для URL алфавит, который заменяет5455`-`5657вместо5859`+`6061и6263`_`6465вместо6667`/`6869в стандартном алфавите Base64. Результат всё ещё может содержать7071`=`7273.7475#### `base64.urlsafe_b64decode(s)`7677Декодирует байтовую строку7879*s*8081, используя безопасный для URL алфавит, который заменяет8283`-`8485вместо8687`+`8889и9091`_`9293вместо9495`/`9697в стандартном алфавите Base64.9899#### `base64.b32encode(s)`100101Кодирует байтовую строку с использованием Base32.102103*s*104105– строка для кодирования. Возвращается закодированная строка.106107#### `base64.b32decode(s, casefold=False, map01=None)`108109Декодирует байтовую строку, закодированную в Base32.110111*s* – байтовая строка для декодирования. Необязательный аргумент *casefold* – флаг, указывающий, допустим ли строчный алфавит на входе. В целях безопасности по умолчанию используется `False`.112113[**RFC 3548**](https://python-all.ru/3.1/library/base64.html) допускает необязательное отображение цифры 0 (ноль) на букву O (о) и необязательное отображение цифры 1 (один) на букву I (ай) или букву L (эл). Необязательный аргумент *map01*, если он не равен `None`, указывает, на какую букву должна отображаться цифра 1 (когда *map01* не равен `None`, цифра 0 всегда отображается на букву O). В целях безопасности по умолчанию используется `None`, чтобы 0 и 1 не допускались во входных данных.114115Возвращается декодированная строка байтов. Если *s* дополнена неправильно или в строке есть символы, не входящие в алфавит, возбуждается [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError).116117#### `base64.b16encode(s)`118119Кодирует байтовую строку с использованием Base16.120121*s* – строка для кодирования. Возвращается закодированная байтовая строка.122123#### `base64.b16decode(s, casefold=False)`124125Декодировать строку байтов, закодированную в Base16.126127*s* – декодируемая строка. Необязательный параметр *casefold* – флаг, указывающий, допустим ли алфавит в нижнем регистре на входе. Из соображений безопасности по умолчанию `False`.128129Возвращается декодированная строка байтов. Если *s* дополнена неправильно или в строке есть символы, не входящие в алфавит, возбуждается [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError).130131Устаревший интерфейс:132133#### `base64.decode(input, output)`134135Декодировать содержимое бинарного файла136137*input*138139и записать полученные бинарные данные в файл140141*output*142143.144145*input*146147и148149*output*150151должны быть152153[*файловыми объектами*](https://python-all.ru/3.1/glossary.html#term-file-object)154155. Чтение из156157*input*158159продолжается, пока160161`input.read()`162163не вернёт пустой объект bytes.164165#### `base64.decodebytes(s)`166167#### `base64.decodestring(s)`168169Декодировать строку байтов170171*s*172173, которая должна содержать одну или более строк данных, закодированных base64, и вернуть строку байтов с полученными бинарными данными.174175`decodestring`176177– устаревший псевдоним.178179#### `base64.encode(input, output)`180181Закодировать содержимое бинарного файла182183*input*184185и записать полученные данные в кодировке base64 в файл186187*output*188189.190191*input*192193и194195*output*196197должны быть198199[*файловыми объектами*](https://python-all.ru/3.1/glossary.html#term-file-object)200201. Чтение из202203*input*204205продолжается, пока206207`input.read()`208209не вернёт пустой объект bytes.210211[`encode()`](https://python-all.ru/3.1/library/base64.html#base64.encode)212213возвращает закодированные данные с добавленным символом новой строки (214215`b'\n'`216217) в конце.218219#### `base64.encodebytes(s)`220221#### `base64.encodestring(s)`222223Закодировать строку байтов224225*s*226227, которая может содержать произвольные бинарные данные, и вернуть строку байтов, содержащую одну или более строк данных в кодировке base64.228229[`encodebytes()`](https://python-all.ru/3.1/library/base64.html#base64.encodebytes)230231возвращает строку, содержащую одну или более строк данных в кодировке base64, всегда включая дополнительный завершающий символ новой строки (232233`b'\n'`234235).236237`encodestring`238239– устаревший псевдоним.240241Пример использования модуля:242243```python244>>> import base64245>>> encoded = base64.b64encode(b'data to be encoded')246>>> encoded247b'ZGF0YSB0byBiZSBlbmNvZGVk'248>>> data = base64.b64decode(encoded)249>>> data250b'data to be encoded'251```252253> **См. также**254>255> **Модуль [`binascii`](https://python-all.ru/3.1/library/binascii.html#module-binascii)**256>257> Вспомогательный модуль, содержащий преобразования ASCII-в-двоичный и двоичный-в-ASCII.258>259> **[**RFC 1521**](https://python-all.ru/3.1/library/base64.html) – MIME (Многоцелевые расширения интернет-почты) Часть 1: Механизмы указания и описания формата тел интернет-сообщений**260>261> Раздел 5.2, «Base64 Content-Transfer-Encoding», содержит определение кодировки base64.262