对于Base64编码,更喜欢str.encode('base64_codec')或base64.b64encode(str)?

时间:2013-04-25 03:08:14

标签: python codec

在Python库中,有base64模块可用于Base64。同时,如果要对字符串进行编码,则存在base64的编解码器,即str.encode('base64_encode')。哪种方法更受欢迎?

2 个答案:

答案 0 :(得分:9)

虽然它可能适用于Python 2:

>>> 'foo'.encode('base64')
'Zm9v\n'

Python 3不支持它:

>>> 'foo'.encode('base64')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
LookupError: unknown encoding: base64

就速度而言(在Python 2中),b64encode方法比.encode()快三倍:

In [1]: %timeit 'fooasodaspf8ds09f8'.encode('base64')
1000000 loops, best of 3: 1.62 us per loop

In [5]: %timeit b64encode('fooasodaspf8ds09f8')
1000000 loops, best of 3: 564 ns per loop

因此,就速度和兼容性而言,base64模块更好。

答案 1 :(得分:1)

仅供参考,还有另一个选项适用于Python 2.4+和3.2 +:

>>> from codecs import encode
>>> encode(b'fooasodaspf8ds09f8', 'base64')
b'Zm9v\n'

这还可以编码/解码gzip和bzip2等。

https://docs.python.org/3.4/library/codecs.html#binary-transforms

http://wingware.com/psupport/python-manual/3.4/whatsnew/3.4.html#improvements-to-codec-handling