博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python档案袋( Json、pickle、加密与解密)
阅读量:5332 次
发布时间:2019-06-15

本文共 2086 字,大约阅读时间需要 6 分钟。

Json是各程序通用的数据格式;pickle是Python特有的,可以存储很多Python特有的数据,如函数地址等

Json的简单使用:

1 import json 2 jsondata={ 3     "user":"dong", 4     "name":"dongxiaodong", 5     "age":100 6 } 7 #字典(json对象)转换为字符串 8 strjson=json.dumps(jsondata) 9 print(type(strjson)) #输出:
10 11 #字符串转换为json对象12 dicjson=json.loads(strjson)13 print(dicjson["age"]) #输出:100

Pickle

Pickle序列化:

1 import pickle 2  3 def funx1(valuex): 4     print("---------------",valuex) 5  6 jsondata={ 7     "user":"dong", 8     "name":"dongxiaodong", 9     "age":100,10     "funx":funx1 #保存函数地址,函数地址是以函数名确定的11 }12 13 #序列化,将字典转换为byte对象14 bytejson=pickle.dumps(jsondata)15 print(type(bytejson)) #输出:
16 17 #保存到文件中18 open("ww.txt","wb").write(bytejson)

Pickle反序列化:

import pickle#必须有序列化相同的函数名,只要函数名相同即可,参数任意def funx1():    print("**********")strjson=open("ww.txt","rb").read()#字符串转换为json对象dicjson=pickle.loads(strjson)print(dicjson["age"]) #输出:100dicjson["funx"]() #调用函数,输出:**********

Shelve(对pickle的上层封装)

序列化

import shelve#打开文件s=shelve.open("fileshelve")#建立列表数据listx=["11","22","33"]#保存数据s["listx"]=listxs["user"]="dongxiaodong"s["name"]="dong"#关闭文件s.close()

反序列化:

import shelve#打开文件s=shelve.open("fileshelve")print(s.get("listx")) #输出:['11', '22', '33']print(s.get("user")) #输出:dongxiaodong#关闭文件s.close()

加密与解密:

Base64 可逆

import base64#加密en=base64.b64encode("dongxiaodong".encode("utf-8"))print(en.decode("utf-8"))  #输出字符串:ZG9uZ3hpYW9kb25n#解密de=base64.b64decode(en).decode("utf-8")print(de) #输出字符串:dongxiaodong

md5 不可逆

import hashlib#方法一mx=hashlib.md5() #s生成md5对象mx.update(b"dongxiaodong") #添加内容,拼接内容mx.update(b"dd")# 输出十六进制格式print(mx.hexdigest()) #输出:f67d530272ebb0cf17ec7cdf2372b6cb#方法二mx2=hashlib.md5(b"dongxiaodongdd") print(mx2.hexdigest()) #输出:f67d530272ebb0cf17ec7cdf2372b6cb

Sha1 不可逆

import hashlibs=hashlib.sha1()s.update(b"dongxiaodongdd")print(s.hexdigest()) #输出:6a878a19687fc95d76f602d1580b54e0f0d2b88d

Hmac

键值对进行加密

import hmac#参数(键,值)h=hmac.new(b"dd",b"dongxiaodong")#如果存在中文,则需要使用encode#h=hmac.new(b"dd","东小东dd".encode("utf-8"))print(h.hexdigest())

转载于:https://www.cnblogs.com/dongxiaodong/p/10496196.html

你可能感兴趣的文章
2019.02.15 bzoj5210: 最大连通子块和(链分治+ddp)
查看>>
redis cluster 集群资料
查看>>
微软职位内部推荐-Sr. SE - Office incubation
查看>>
微软职位内部推荐-SOFTWARE ENGINEER II
查看>>
centos系统python2.7更新到3.5
查看>>
C#类与结构体究竟谁快——各种函数调用模式速度评测
查看>>
我到底要选择一种什么样的生活方式,度过这一辈子呢:人生自由与职业发展方向(下)...
查看>>
poj 题目分类
查看>>
windows 安装yaml支持和pytest支持等
查看>>
读书笔记:季羡林关于如何做研究学问的心得
查看>>
面向对象的优点
查看>>
套接口和I/O通信
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>