Python学习心得(五) random生成验证码、MD5加密、pickle与json的序列化和反序列化

# -*- coding:utf-8 -*-

import random as rd #验证码
import hashlib as hsl #MD5加密
import pickle,json #pickle与json序列化

#print rd.randint(1,5)

#print help(range)
#print help(rd.randint)

#随机生成6位验证码:
code = []
for i in range(1,7):
    if i == rd.randint(1,6):
        code.append(str(i))
    else:
        code.append(chr(rd.randint(65,90)))
            
print ''.join(code)    

#MD5加密,不能反解,实际应用中验证用户是否登录时,可以md5()正解匹配
hashtest = hsl.md5()
hashtest.update('admin')
print hashtest.hexdigest()

#pickle序列化与反序列化  及和json的区别
"""
pickle 与  json

1.pickle是python专用的,json几乎所有的编程语言都支持json格式,不同语言间数据内存交互以json为主
2.pickle和json在Python中的用法都是一样的,pickle基本上python中所有的数据类型都能序列化,json只能序列化常规的列表、字典等
3.pickle序列化的数据默认不可读(人工无法分辨),但json序列化后可以直观看到(可读)

"""

dict_pick = {'name':'binguo','age':27,'blogurl':'http://blog.csdn.net/binguo168'}
dict_json = {'company':'china','hobby':'study'}

#序列化
result1 = pickle.dumps(dict_pick)
result2 = json.dumps(dict_json)
print result1
print result2

with open('E:/pickleresult.txt','w') as file_pickle:
    pickle.dump(dict_pick, file_pickle) #序列化到文件

with file('E:/pickleresult.txt','r') as read_pickle:
    print pickle.load(read_pickle) #从文件反序列化回来
    
#反序列化
print pickle.loads(result1)
print json.loads(result2)