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)) #输出:<class 'str'>
  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)) #输出:<class 'bytes'>
  16.  
  17. #保存到文件中
  18. open("ww.txt","wb").write(bytejson)

Pickle反序列化:

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

Shelve(对pickle的上层封装)

序列化

  1. import shelve
  2.  
  3. #打开文件
  4. s=shelve.open("fileshelve")
  5.  
  6. #建立列表数据
  7. listx=["","",""]
  8.  
  9. #保存数据
  10. s["listx"]=listx
  11. s["user"]="dongxiaodong"
  12. s["name"]="dong"
  13.  
  14. #关闭文件
  15. s.close()

反序列化:

  1. import shelve
  2.  
  3. #打开文件
  4. s=shelve.open("fileshelve")
  5.  
  6. print(s.get("listx")) #输出:['11', '22', '33']
  7. print(s.get("user")) #输出:dongxiaodong
  8.  
  9. #关闭文件
  10. s.close()

加密与解密:

Base64 可逆

  1. import base64
  2.  
  3. #加密
  4. en=base64.b64encode("dongxiaodong".encode("utf-8"))
  5. print(en.decode("utf-8")) #输出字符串:ZG9uZ3hpYW9kb25n
  6.  
  7. #解密
  8. de=base64.b64decode(en).decode("utf-8")
  9. print(de) #输出字符串:dongxiaodong

md5 不可逆

  1. import hashlib
  2.  
  3. #方法一
  4. mx=hashlib.md5() #s生成md5对象
  5.  
  6. mx.update(b"dongxiaodong") #添加内容,拼接内容
  7. mx.update(b"dd")
  8.  
  9. # 输出十六进制格式
  10. print(mx.hexdigest()) #输出:f67d530272ebb0cf17ec7cdf2372b6cb
  11.  
  12. #方法二
  13. mx2=hashlib.md5(b"dongxiaodongdd")
  14.  
  15. print(mx2.hexdigest()) #输出:f67d530272ebb0cf17ec7cdf2372b6cb

Sha1 不可逆

  1. import hashlib
  2.  
  3. s=hashlib.sha1()
  4.  
  5. s.update(b"dongxiaodongdd")
  6.  
  7. print(s.hexdigest()) #输出:6a878a19687fc95d76f602d1580b54e0f0d2b88d

Hmac

键值对进行加密

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

Python档案袋( Json、pickle、加密与解密)的更多相关文章

  1. 【python】-- json & pickle、xml、requests、hashlib、shelve、shutil、configparser、subprocess

    json & pickle Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] ...

  2. python 序列化 json pickle

    python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...

  3. python之json&pickle

    用于序列化的两个模块: json:用于字符串和python数类型间进行转换 oickle:用于python特有的类型和python的数据类型间进行转换 json.pickle模块提供四个功能:dump ...

  4. python基础--json,pickle和shelve模块

    一.JSON &pickle 用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换  字符串必须是双引号,不能是单引号 pickle,用于python特有的类型 和 ...

  5. Python(序列化json,pickle,shelve)

    序列化 参考:https://www.cnblogs.com/yuanchenqi/articles/5732581.html # dic = str({'1':'111'}) # # f = ope ...

  6. python模块--json \ pickle \ shelve \ XML模块

    一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...

  7. python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)

    一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...

  8. 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 ...

  9. Python学习第二阶段Day2(json/pickle)、 shelve、xml、PyYAML、configparser、hashlib模块

    1.json/pickle   略. 2.shelve模块 import shelve # shelve 以key value的形式序列化,value为对象 class Foo(object): de ...

随机推荐

  1. Epson L4158打印机安装与配置

    上周购买了一台打印.扫描.复印三合一的Epson L4158喷墨打印机,主要用于打印数学纸版笔记套图.长笛乐谱.常用软件的cheatsheet(例如,GNU/Linux命令.GNU Emacs快捷键. ...

  2. Oracle数据库体系结构之进程结构(4)

    Oracle进程结构包括用户进程,服务进程,后台进程. 1. 用户进程 用户进程在数据库用户要求连接到Oracle服务器时开始启动. 用户进程是要求Oracle服务器交互的一种进程 它必须首先建立一个 ...

  3. Python OpenCV 图像相识度对比

    强大的openCV能做什么我就不啰嗦,你能想到的一切图像+视频处理. 这里,我们说说openCV的图像相似度对比, 嗯,说好听一点那叫图像识别,但严格讲, 图像识别是在一个图片中进行类聚处理,比如图片 ...

  4. Linux:从入门到放弃

    [未解决] # 周五,安装ubuntu 18.04 # 周六,相继安装minit / deepin 系统. # 至今,遇到过还没有解决的问题有: # . 开机ACPI Error: # . 无论哪个L ...

  5. Unreal 4 error 记录

    1.打包出来的exe,黑屏 这种最大的可能是在“地图&模式中”将 Default Maps设置为自己的map,注意这里分为Editor Startup Map和Game Default Map ...

  6. mstsc的事 随笔

    当个备份吧, 记不得了,就翻一下自己的博客. MSTSC 设置, 平台:Windows 10 企业版 Windows 10 企业版,功能最全.

  7. 我的 FPGA 学习历程(07)—— BCD 编码:移位加 3 算法

    2-10 进制码,也称为 BCD 码,它的编码方式则是通过一个 4 位二进制来表示一个 10 进制数,部分十进制对应的 BCD 码如下 十进制数 | BCD 码 13 --> 0001_0011 ...

  8. 数据分析——numpy

    DIKW DATA-->INFOMATION-->KNOWLEDGE-->WISDOM 数据-->信息-->知识-->智慧 爬虫-->数据库-->数据分 ...

  9. VB6进行GZIP解压&C#进行GZIP压缩和解压

    VB进行GZIP解压的,DLL是系统的,如果没有 [点击下载] Option Explicit 'GZIP API '----------------------------------------- ...

  10. nginx配置前端代理

    #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log notice;#error_l ...