4

在 Python 库中,有用于处理 Base64 的 base64 模块。同时,如果要对字符串进行编码,还有base64的编解码器,即str.encode('base64_encode'). 首选哪种方法?

4

2 回答 2

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模块都比较好。

于 2013-04-25T03:16:12.787 回答
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

于 2014-09-23T15:25:50.797 回答