一、json格式的限制

1.json格式的key必须是字符串数据类型,如果是数字dumps后会被转为字符串。

# dic = {1:2,3:4}
# str_dic = json.dumps(dic)
# print(str_dic)
# new_dic = json.loads(str_dic)
# print(new_dic)

2.元组可以作为vaule但会被转为列表,并且不能作为key

3.可以多次将数据dump进文件,但不能load出来。

# dic = {'abc':(1,2,3)}
# lst = ['aaa',123,'bbb',12.456]
# with open('json_demo','w') as f:
# json.dump(lst,f)
# json.dump(dic,f)
# with open('json_demo') as f:
# ret = json.load(f)
# print(ret)
#报错

4.想多次dump并load出来

dic = {'abc':(1,2,3)}
lst = ['aaa',123,'bbb',12.456]
with open('json_demo','w') as f:
str_lst = json.dumps(lst)
str_dic = json.dumps(dic)
f.write(str_lst+'\n')
f.write(str_dic+'\n') with open('json_demo') as f:
for line in f:
ret = json.loads(line)
print(ret)

二、pickl

1.dump的结果是bytes,dump用的f文件句柄需要以wb的形式打开,load所用的f是'rb'模式

2.pickle支持几乎所有对象的

把对象写入,及读出

# class Student:
# def __init__(self,name,age):
# self.name = name
# self.age = age
#
# alex = Student('alex',83)
# ret = pickle.dumps(alex)
# 小花 = pickle.loads(ret)
# print(小花.name)
# print(小花.age) # class Student:
# def __init__(self,name,age):
# self.name = name
# self.age = age
#
# alex = Student('alex',83)
# with open('pickle_demo','wb') as f:
# pickle.dump(alex,f)
# with open('pickle_demo','rb') as f:
# 旺财 = pickle.load(f)
# print(旺财.name)

三、hashlib

1.

# 能够把 一个 字符串 数据类型的变量
# 转换成一个 定长的 密文的 字符串,字符串里的每一个字符都是一个十六进制数字
背下来
# md5_obj = hashlib.md5()#或者sha1等
# md5_obj.update(s1.encode('utf-8'))#encode必须要
# res = md5_obj.hexdigest()
# print(res,len(res),type(res))

2.动态加盐,更加安全

# username = input('username : ')
# passwd = input('password : ')
# md5obj = hashlib.md5(username.encode('utf-8'))
# md5obj.update(passwd.encode('utf-8'))
# print(md5obj.hexdigest())

3.文件一致性检验

# md5_obj = hashlib.md5()
# with open('5.序列化模块_shelve.py','rb') as f:
# md5_obj.update(f.read())
# ret1 = md5_obj.hexdigest()
#
# md5_obj = hashlib.md5()
# with open('5.序列化模块_shelve.py.bak','rb') as f:
# md5_obj.update(f.read())
# ret2 = md5_obj.hexdigest()
# print(ret1,ret2)

python day28--json,pickle,hashlib,logging的更多相关文章

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

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

  2. os模块/sys模块/json/pickle模块/logging模块(day16整理)

    目录 今日内容 os模块 对文件操作 对文件夹此操作 辅助性的 了解 sys模块 json和pickle模块 json模块 pickle模块 logging模块 日志级别 添加设置 自定义配置 今日内 ...

  3. os模块 sys模块 json/pickle 模块 logging模块

    目录 模块 1. os模块 2. sys模块 3. json和pickle模块 4. logging模块 (1)日志配置 (2)实际开发中日志的使用 模块 1. os模块 os模块有什么用 与操作系统 ...

  4. python 序列化 json pickle

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

  5. python之json&pickle

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

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

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

  7. 面向对象进阶------>模块 json pickle hashlib

    何为模块呢?  其实模块就是.py文件 python之所以好用就是模块多 模块分三种 :  内置模块 . 拓展模块.自定义模块. 现在我们来认识:内置模块中的 序列化模块和 hashlib  模块 1 ...

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

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

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

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

随机推荐

  1. java ==与equals()方法的总结

    1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean   他们之间的比较,应用双等号(==),比较的是他们的值. 2.复合数据 ...

  2. 使用查询分析器和SQLCMD分别登录远程的SQL2005的1434端口

    SQLCMD是操作SQLSERVER的一个命令行工具, 而查询分析器是它的图形工具     查询分析器(SQL2005下叫managerment studio),连接远程的SQLSERVER2005, ...

  3. Python RabbitMQ消息持久化

    RabbitMQ消息持久化:就是将队列中的消息永久的存放在队列中.   处理方案: # 在实例化时加入durable=True来确认消息的实例化,客户端服务端都要写 channel.queue_dec ...

  4. Linux 系统安全设置

    一.SElinux安全子系统策略. 临时修改 命令:setenforce 0 #临时关闭selinux. 命令:setenforce 1 #临时开启selinux 命令:getenforce      ...

  5. [c/c++] programming之路(13)、函数

    一.函数 #include<stdio.h> //stdio.stdlib标准库 #include<stdlib.h> //代码重用, 函数的诞生,C语言主要是函数组成 //写 ...

  6. libcurl返回常见错误码

    转载:https://blog.csdn.net/kenkao/article/details/46875571 转载:http://www.cnblogs.com/wainiwann/p/34929 ...

  7. CSS基础学习(一) 之 line-height 与 height 属性区别

    官方定义: height:定义了了元素的高度.默认情况下,该属性订了 content area(内容区域) 的高度.如果box-sizing属性设置为 border-box,那么height就表示bo ...

  8. java jdk动态代理学习记录

    转载自: https://www.jianshu.com/p/3616c70cb37b JDK自带的动态代理主要是指,实现了InvocationHandler接口的类,会继承一个invoke方法,通过 ...

  9. Angular4.x Event (DOM事件和自定义事件)

    Angular组件和DOM元素通过事件与外部进行通信,两者中的事件绑定语法是相同的-(eventName)="expression": <button (click)=&qu ...

  10. Angular 学习笔记 (Material Datepicker)

    https://material.angular.io/components/datepicker/overview 官网介绍很清楚了,这里记入一下我比较不熟悉的. 1. moment js Angu ...