このモジュールは、 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'
参考