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、加密与解密)的更多相关文章

  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. 浅析微信小程序技术架构(原创)

    周末万里虎抽空体验了下微信小程序的DEMO,对小程序的开发有了一个基础的了解与认识,今天就来和大家分享一下我对小程序的看法. 从官方DEMO来看,小程序在技术架构上非常清晰易懂.JS负责业务逻辑的实现 ...

  2. XMLHttpRequest中常用的方法

    a.) abort() 停止当前请求b.) getAllResponseHeaders() 把HTTP请求的所有响应首部作为键值对返回c.) open("method", &quo ...

  3. js中的严格模式和非严格模式的比较

    前言 es5的严格模式是采用具有限制性JavaScript变体的一种方式,从而使代码显示地脱离'懒散模式/非严格模式' 严格模式 严格模式通过抛出错误来消除一些原有静默错误 严格模式修复了一些导致Ja ...

  4. 简易promise的实现(一)

    code 最近在思考promise的实现原理 于是准备自己写一个简单的demo 一开始想到的问题有两个 1.链式调用 2.异步顺序执行 -------------------------------- ...

  5. 自己动手写Redis客户端(C#实现)2 - SET请求和状态回复(set)

    Redis请求协议的一般形式: *<参数数量> CR LF $<参数 的字节数量> CR LF <参数 的数据> CR LF ... $<参数 N 的字节数量 ...

  6. python第十六天

    一.包 1.什么是包? 一系列模块的集合 2.有什么用? 包通过文件夹来管理一系列功能相近的模块 3.包重点? 包中一定有一个专门用来管理包中所有模块的文件   __init__ 4.什么是包名? 包 ...

  7. hibernate-release-5.2.9.Final

    链接:https://pan.baidu.com/s/1UaoaaXb5C9gJp3Yu7sjUVQ 提取码:orgx

  8. tp5 整合 个推

    这里因为业务需要使用推送功能 uni 里面前端集成了个推 所以选择了个推来做推送. 个推的官方文档地址: http://docs.getui.com/getui/server/php/start/ 在 ...

  9. 解决win10搜索框不能使用的问题

    1.首先,打开管理员命令窗口,win+x,可以看到弹出一个窗口,打开windows Powershell(管理员) 2,输入 Get-AppXPackage -Name Microsoft.Windo ...

  10. Java是值传递还是引用传递?

    Java的值传递和引用传递在面试中一般都会都被涉及到,今天我们就来聊聊这个问题.这个问题一般是相对函数而言的,也就是Java中所说的方法参数,那么我们先来回顾一下在程序设计语言中有关参数传递给方法的两 ...