Python档案袋( Json、pickle、加密与解密)
Json是各程序通用的数据格式;pickle是Python特有的,可以存储很多Python特有的数据,如函数地址等
Json的简单使用:
import json
jsondata={
"user":"dong",
"name":"dongxiaodong",
"age":100
}
#字典(json对象)转换为字符串
strjson=json.dumps(jsondata)
print(type(strjson)) #输出:<class 'str'> #字符串转换为json对象
dicjson=json.loads(strjson)
print(dicjson["age"]) #输出:100
Pickle
Pickle序列化:
import pickle def funx1(valuex):
print("---------------",valuex) jsondata={
"user":"dong",
"name":"dongxiaodong",
"age":100,
"funx":funx1 #保存函数地址,函数地址是以函数名确定的
} #序列化,将字典转换为byte对象
bytejson=pickle.dumps(jsondata)
print(type(bytejson)) #输出:<class 'bytes'> #保存到文件中
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"]) #输出:100
dicjson["funx"]() #调用函数,输出:**********
Shelve(对pickle的上层封装)
序列化
import shelve #打开文件
s=shelve.open("fileshelve") #建立列表数据
listx=["","",""] #保存数据
s["listx"]=listx
s["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 hashlib s=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())
Python档案袋( Json、pickle、加密与解密)的更多相关文章
- 【python】-- json & pickle、xml、requests、hashlib、shelve、shutil、configparser、subprocess
json & pickle Python中用于序列化的两个模块 json 用于[字符串]和 [python基本数据类型] 间进行转换 pickle 用于[python特有的类型] ...
- python 序列化 json pickle
python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...
- python之json&pickle
用于序列化的两个模块: json:用于字符串和python数类型间进行转换 oickle:用于python特有的类型和python的数据类型间进行转换 json.pickle模块提供四个功能:dump ...
- python基础--json,pickle和shelve模块
一.JSON &pickle 用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 字符串必须是双引号,不能是单引号 pickle,用于python特有的类型 和 ...
- Python(序列化json,pickle,shelve)
序列化 参考:https://www.cnblogs.com/yuanchenqi/articles/5732581.html # dic = str({'1':'111'}) # # f = ope ...
- python模块--json \ pickle \ shelve \ XML模块
一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...
- python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)
一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...
- python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则
python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess ...
- Python学习第二阶段Day2(json/pickle)、 shelve、xml、PyYAML、configparser、hashlib模块
1.json/pickle 略. 2.shelve模块 import shelve # shelve 以key value的形式序列化,value为对象 class Foo(object): de ...
随机推荐
- JAVA操作证书
一.生成证书工具keytool Java自带的工具keytool可以用来生成密钥证书,也可以查看或删除证书库里的证书.无论是windows还是Linux系统,这个工具都会出现在jdk安装目录的bin文 ...
- [原创]免固件开发USB2.0 FPGA方案 速度40Mbyte/s+
USB 2.0接口,实测速度40Mbyte/s: 一个接口实现两种功能(USB2.0+FPGA配置): 免固件开发: 完整的FPGA代码,即拿即用: FPGA逻辑工程师开发USB接口福音: 平台可移植 ...
- DDD - 概述 - (一)
本片将介绍以下内容: 1).DDD是什么? 2).怎么使用DDD? 3).使用DDD应该规避或者注意什么? 一.DDD是什么? 简言之:领域驱动设计(domain driven design),顾名思 ...
- 初学笔记之:Java_Script的for循环事件绑定
看JS,一直纠结于for循环事件绑定,我一直不理解,想找到一些解释,以下是个人研究一个下午后的一些见解,有不对的还望大神们指正,轻喷.在这里谢过啦. 首先,目的是做一个滑动切换图片的效果,上JS代码: ...
- [sublime]用sublime搭建属于自己的Python的IDE
先在sublime中利用package control下载anaconda插件, 然后更改python的路径,不知道自己anaconda的python在哪,可以在prompt用命令where pyth ...
- Mix 导航
Mix 导航 一.程序员必备技能 Markdonw 使用 Git 常用命令 二.分析设计 UML 三.其他 博客园代码样式修改
- MySQL 栏位修改为区分大小写
) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL; ) BINARY CHARACTER SET utf8 COLLATE utf8_ ...
- Kafka详细配置
转自:http://blog.csdn.net/suifeng3051/article/details/38321043?utm_source=tuicool&utm_medium=refer ...
- Chapter 5 : Control Structures 2 : Repetition
import java.util.*; import java.io.*; public class Loop { static Scanner console = new Scanner(Syste ...
- android BLE Peripheral 模拟 ibeacon 发出ble 广播
Android对外模模式(peripheral)的支持: 从Android 5.0+开始才支持. api level >= 21 所以5.0 之前设备,是不能向外发送广播的. Android中心 ...