详解Python中使用base64模块来处理base64编码的方法
base64模块是用来作base64编码解码的。这种编码方式在电子邮件中是很常见的。 闲话不说了,base64模块真正用的上的方法只有8个,分别是encode,decode,encodestring,decodestring,b64encode,b64decode,urlsafe_b64decode,urlsafe_b64encode。他们8个可以两两分为4组,encode,decode一组,专门用来编码和 解码文件的,也可以对StringIO里的数据做编解码;encodestring,decodestring一组,专门用来编码和解码字符串; b64encode和b64decode一组,用来编码和解码字符串,并且有一个替换符号字符的功能。这个功能是这样的:因为base64编码后的字符除 了英文字母和数字外还有三个字符 + / =,其中=只是为了补全编码后的字符数为4的整数,而+和/在一些情况下需要被替换的,b64encode和b64decode正是提供了这样的功能。至于什 么情况下+和/需要被替换,最常见的就是对url进行base64编码的时候。urlsafe_b64encode和urlsafe_b64decode 一组,这个就是用来专门对url进行base64编解码的,实际上也是调用的前一组函数。 基本用法 import base64 me = base64.b64encode("mink") print me # print 'bWluaw==' 会把少的字符用=号补上 print base64.b64decode(me) # print 'mink' 可以解码得到原有的字符串 urlsafe_b64encode 和 urlsafe_b64decode base64的还提供用于url的编码方法urlsafe_b64encode 和urlsafe_b64decode. me = base64.urlsafe_b64encode('ixb7x1dxfbxefxff') print me # print 'abcd--__' print base64.urlsafe_b64decode(me) print 'abcd++//' 因为base64编码后+和-可能会出现在字符中,所以通过urlsafe的方法把+转换为-,/转化为_. 由于=字符也可能出现在Base64编码中,但=用在URL Cookie里面会造成歧义,很多Base64编码后会把=去掉.去掉=后怎么解码呢?因为Base64是把3个字节变为4个字节,所以Base64编码的长度永远是4的倍数.因此需要加上=把Base64字符串的长度变为4的倍数,就可以正常解码了. 综合示例 #-*- encoding:gb2312 -*- import base64 import StringIO a = "this is a test" b = base64.encodestring(a) # 对字符串编码 print b print base64.decodestring(b) # 对字符串解码 c = StringIO.StringIO() c.write(a) d = StringIO.StringIO() e = StringIO.StringIO() c.seek(0) base64.encode(c,d) # 对StringIO内的数据进行编码 print d.getvalue() d.seek(0) base64.decode(d,e) # 对StringIO内的数据进行解码 print e.getvalue() a = "this is a +test" b = base64.urlsafe_b64encode(a) # 进行url的字符串编码 print b print base64.urlsafe_b64decode(b)
f1 = open('aaa.txt','r') f2 = open('bbb.txt','w') base64.encode(f1,f2) f1.close() f2.close() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |