このモジュールは、 RFC 3548 で定められた仕様によるデータの符号化 (エンコード、encoding) および復元 (デコード、decoding) を提供します。 この RFC 標準では Base16, Base32 および Base64 が定義されており、 これはバイナリ文字列とテキスト文字列とをエンコードあるいはデコードするためのアルゴリズムです。 変換されたテキスト文字列は email で確実に送信したり、URL の一部として使用したり、HTTP POST リクエストの一部に含めることができます。 これらの符号化アルゴリズムは uuencode で使われているものとは別物です。
このモジュールでは 2つのインターフェイスが提供されています。 現代的なインターフェイスは、これら 3種類のアルファベット集合を使った 文字列オブジェクトのエンコードおよびデコードをすべてサポートします。 一方、レガシーなインターフェイスは、文字列とともにファイル風のオブジェクトに対する エンコード / デコードを提供しますが、Base64 標準のアルファベット集合しか使いません。
Python 2.4 で導入された現代的なインターフェイスは以下のものを提供します:
Base64 をつかって、文字列をエンコード (符号化) します。
s はエンコードする文字列です。 オプション引数 altchars は最低でも 2 の長さをもつ文字列で (これ以降の文字は無視されます)、これは + と / の代わりに使われる代替アルファベットを指定します。これにより、アプリケーションはたとえば URL やファイルシステムの影響をうけない Base64 文字列を生成することができます。デフォルトの値は None で、これは標準の Base64 アルファベット集合が使われることを意味します。
エンコードされた文字列が返されます。
Base64 文字列をデコード (復元) します。
s にはデコードする文字列を渡します。 オプション引数の altchars は最低でも 2 の長さをもつ文字列で (これ以降の文字は無視されます)、 これは + と / の代わりに使われる代替アルファベットを指定します。
デコードされた文字列が返されます。 s が正しくパディングされていなかったり、 規定のアルファベット以外の文字が含まれていた場合には TypeError が発生します。
標準の Base64 アルファベット集合をもちいて文字列 s をエンコード (符号化) します。
標準の Base64 アルファベット集合をもちいて文字列 s をデコード (復元) します。
URL 用に安全なアルファベット集合をもちいて文字列 s をエンコード (符号化) します。 これは、標準の Base64 アルファベット集合にある + のかわりに - を使い、 / のかわりに _ を使用します。 出来上がった文字列には = が残っている可能性があります。
URL 用に安全なアルファベット集合をもちいて文字列 s をデコード (復元) します。 これは、標準の Base64 アルファベット集合にある + のかわりに - を使い、 / のかわりに _ を使用します。
Base32 をつかって、文字列をエンコード (符号化) します。 s にはエンコードする文字列を渡し、エンコードされた文字列が返されます。
Base32 をつかって、文字列をデコード (復元) します。
s にはエンコードする文字列を渡します。オプション引数 casefold は小文字のアルファベットを受けつけるかどうかを指定します。 セキュリティ上の理由により、デフォルトではこれは False になっています。
RFC 3548 は付加的なマッピングとして、数字の 0 (零) をアルファベットの O (オー) に、 数字の 1 (壱) をアルファベットの I (アイ) または L (エル) に対応させることを許しています。 オプション引数は map01 は、 None でないときは、数字の 1 をどの文字に対応づけるかを指定します (map01 が None でないとき、数字の 0 はつねにアルファベットの O (オー) に対応づけられます)。 セキュリティ上の理由により、これはデフォルトでは None になっているため、 0 および 1 は入力として許可されていません。
デコードされた文字列が返されます。 s が正しくパディングされていなかったり、 規定のアルファベット以外の文字が含まれていた場合には TypeError が発生します。
Base16 をつかって、文字列をエンコード (符号化) します。
s にはエンコードする文字列を渡し、エンコードされた文字列が返されます。
Base16 をつかって、文字列をデコード (復元) します。
s にはエンコードする文字列を渡します。オプション引数 casefold は小文字のアルファベットを受けつけるかどうかを指定します。 セキュリティ上の理由により、デフォルトではこれは False になっています。
デコードされた文字列が返されます。 s が正しくパディングされていなかったり、 規定のアルファベット以外の文字が含まれていた場合には TypeError が発生します。
レガシーなインターフェイスは以下のものを提供します:
input の中身をデコードした結果を output に出力します。 input 、 output ともにファイルオブジェクトか、ファイルオブジェクトと同じインターフェースを持った オブジェクトである必要があります。 input は input.read() が空文字列を返すまで読まれます。
文字列*s*をデコードして結果のバイナリデータを返します。 s には一行以上のbase64形式でエンコードされたデータが含まれている必要があります。
input の中身をbase64形式でエンコードした結果を output に出力します。 input 、 output ともにファイルオブジェクトか、 ファイルオブジェクトと同じインターフェースを持ったオブジェクトである必要があります。 input は input.read() が空文字列を返すまで読まれます。 encode() はエンコードされたデータと改行文字('\n')を出力します。
文字列 s (任意のバイナリデータを含むことができます)をr base64形式でエンコードした結果の(1行以上の文字列)データを返します。 encodestring() はエンコードされた一行以上のデータと改行文字 ('\n')を出力します。
モジュールの使用例:
>>> import base64
>>> encoded = base64.b64encode('data to be encoded')
>>> encoded
'ZGF0YSB0byBiZSBlbmNvZGVk'
>>> data = base64.b64decode(encoded)
>>> data
'data to be encoded'
参考