Chinaunix首页 | 论坛 | 博客
  • 博客访问: 123860
  • 博文数量: 83
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-13 10:26
个人简介

- 毅力与勇气是事业的双飞翼; - 在尝试中成长,在失败中奋起。 - 概览 -> 细读 -> 概览 - 书不在多,在于精。

文章分类

全部博文(83)

文章存档

2016年(2)

2015年(6)

2014年(75)

我的朋友

分类: Python/Ruby

2014-06-09 11:30:35

base64模块是用来作base64编码解码的。这种编码方式在电子邮件中是很常见的。

它可以把不能作为文本显示的二进制数据编码为可显示的文本信息。编码后的文本大小会增大1/3。

base64模块真正用的上的方法只有8个,分别是encode, decode, encodestring, decodestring, b64encode,b64decode, urlsafe_b64decode,urlsafe_b64encode。他们8个可以两两分为4组:

1).  encode,decode一组,专门用来编码和 解码文件的,也可以对StringIO里的数据做编解码;

2).  encodestring,decodestring一组,专门用来编码和解码字符串; 

3).  b64encode和b64decode一组,用来编码和解码字符串,并且有一个替换符号字符的功能。这个功能是这样的:因为base64编码后的字符除 了英文字母和数字外还有三个字符 + / =, 其中=只是为了补全编码后的字符数为4的整数,而+和/在一些情况下需要被替换的,b64encode和b64decode正是提供了这样的功能。至于什 么情况下+和/需要被替换,最常见的就是对url进行base64编码的时候。

4).  urlsafe_b64encode和urlsafe_b64decode 一组,这个就是用来专门对url进行base64编解码的,实际上也是调用的前一组函数。


下面看看例子: 

#-*- encoding:gb2312 -*-
import base64
import StringIO

= "this is a test"
= base64.encodestring(a) # 对字符串编码
print b
print base64.decodestring(b) # 对字符串解码

= StringIO.StringIO()
c.write(a)
= StringIO.StringIO()
= StringIO.StringIO()
c.seek(0)
base64.encode(c, d) 
# 对StringIO内的数据进行编码
print d.getvalue()
d.seek(0)
base64.decode(d, e) 
# 对StringIO内的数据进行解码
print e.getvalue()

= "this is a +test"
= base64.urlsafe_b64encode(a) # 进行url的字符串编码
print b
print base64.urlsafe_b64decode(b)


上面的encode函数和decode函数的参数其实还可以是文件对象的,那的象这样:

f1 = open('aaa.txt''r')
f2 
= open('bbb.txt''w')

base64.encode(f1, f2)

f1.close()
f2.close()



转自:


#@小五义 http://www.cnblogs.com/xiaowuyi#将c盘下1.txt(base64编码的内容)解码后存在c盘下2.txt中import base64

点击(此处)折叠或打开

  1. filea = open(r'c:\1.txt','r')
  2. lines = filea.readlines()
  3. writefile=open(r'c:\2.txt','w')for i in lines:
  4.         word = i.strip()
  5.         b = base64.decodestring(word)
  6.         print b
  7.         writefile.write(b)
  8.         writefile.write('\n')
  9. writefile.close()
  10. filea.close()

阅读(303) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~