包--json 与 pickle 模块
一. 包
一个含有__init__.py 文件的文件夹(将py 文件中的内容划分成不同的部分放在不同的py 文件中,在将这些py 文件放在一个文件夹中)
是模块,不做执行文件,仅做调用
m1.py 和 m2.py 和__init__.py 同层级(同在aaa文件夹下)
run.py 执行文件 与aaa文件夹同层级(执行文件要调用aaa文件夹里面m1.py 和m2.py 中的变量) m1.py 文件中:
def func1():
print('func1函数') m2.py 文件中
def func2():
print('func2函数') __init__.py 文件中: from aaa.m1 import func1
from aaa.m2 import func2 run.py 文件中调用:
import aaa
aaa.func1()
aaa.func2() 总结: 在run.py 文件中import aaa 时先产生了名称空间,然后自动运行aaa文件夹下的 __init__.py 文件, 此时__init__.py 文件中已经导入了fu
nc1 和 func2 函数, 因此在run.py 文件中可以直接调用func1 和 func2函数
__init__.py 文件中绝对导入: 从包的顶级目录(aaa)开始查找
__init__.py 文件中相对导入:只能在包内使用,仅限于包内模块彼此相互引用,用点 . 代替(当前)文件夹名
例: from .m1 import func1 from ..m3 import fff 一个点代表一级目录
二. json 与 pickle模块: 解决序列化问题
序列化: 将内存中的数据类型转成另一种格式
例如:字典====》其他格式======》存在硬盘
反序列化: 将硬盘中的其他格式转回python java 等能识别的格式
例如: 硬盘中的其他格式====》读取其他格式=====》 转换回字典类型
序列化原因: 持久保存程序的运行状态
数据的跨平台应用
如何序列化: json 和 pickle
json格式 python格式
{} dict
[] list ==========》json 优点:是一种通用格式,所有编程语言都能识别(跨平台性好)
1233 int float ==========》json 缺点:不能识别所有的python类型(不能识别集合类型)
true/false True/False
null None
pickle 优点:能识别所有的python类型
pickle 缺点: 只能被python这门编程语言识别(无法跨平台交互)
例: 用json 将字典序列化存入内存 d={'name':'egon','password':} d_json=json.dumps(d)
with open('r.txt','wt','utf-8') as f:
f.write(d_json) 方法二: 使用 dump()
with open('r.txt','wb') as f: ==============》 json 用途:持久保存程序的运行状态 和 数据的跨平台交互
json.dump(d,f) # 将硬盘中的 json 格式转换为python中的字典 with open('r.txt','rt') as f:
dic_json=f.read()
dic=json.loads(dic_json) 方法二:
with open('r.txt','rt') as f:
d= json.load(f)
用pickle将字典序列化成其他格式存入硬盘,然后将硬盘中的内容读出,然后将其再转换为python中的字典格式
d={'name':'egon','password':123} d_pickle=pickle.dumps(d)
with open('r.txt','wb') as f: # 只能用b模式
f.write(d_pickle) 方法二: dump()
with open('r.txt','wb') as f: =========> pickle 唯一用途将数据存入硬盘
pickle.dump(d,f)
然后将其再转换为python中的字典格式
with open('r.txt','rb') as f:
d_pickle=f.read()
d=pickle.loads(d_pickle) 方法二:
with open('r.txt','rb')
d=pickle.load(f)
包--json 与 pickle 模块的更多相关文章
- python-时间模块,random、os、sys、shutil、json和pickle模块
一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...
- python模块(json和pickle模块)
json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...
- Python json和pickle模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...
- Python之时间模块、random模块、json与pickle模块
一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...
- python常用模块之json、pickle模块
python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...
- os模块,sys模块,json和pickle模块,logging模块
目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...
- 模块讲解---os模块,sys模块,json和pickle模块,logging模块
目录 模块的用法 os模块 常用的功能 sys模块 常用的功能 json和pickle模块 4. logging模块 模块的用法 通过 import 或者from......import...... ...
- 第十章、json和pickle模块
目录 第十章.json和pickle模块 一.序列化 二.json 三.pickle模块 第十章.json和pickle模块 一.序列化 把对象(变量)从内存中变成可存储或传输的过程称之为序列化, 序 ...
- python(6)- json和pickle模块
这是用于序列化的两个模块: json: 用于字符串和python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 Json模块提供了四个功能:dumps ...
随机推荐
- docker+jenkins实现spring boot项目持续集成自动化部署
一.首先jenkins与docker的安装参考下面链接 安装jenkins: https://www.cnblogs.com/jescs/p/7644635.html 安装docker:ht ...
- 鼠标经过事件(onmouseover)
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- Qt532.QSettings_默认分隔符
1.http://bbs.csdn.net/topics/391831509?page=1 2楼: QSettings读取配置文件的内容是以逗号作为分隔符,以分号作为结束符.遇到分号就结束了,后面的内 ...
- 创建SpringBoot项目pom.xml文件第一行报错:Non-parseable POM E:\maven\repository\org\springframework\securit
在编辑pom.xml时,第一行有个刺眼红色×,然后在Problems看到这个问题 [ERROR] The build could not read 1 project -> [Help 1]E: ...
- IPC 之 Messenger 的使用
一.概述 Messenger 是一种轻量级的 IPC 方案,它的底层实现是 AIDL ,对 AIDL 进行了封装,方便了对它的使用.Messenger 一次只处理一个请求,所以在服务端不用考虑线程同步 ...
- 用aws cli 下载s3中数据到本地
参考https://blog.csdn.net/DynastyRumble/article/details/76649120 1 首先注册AWS账户,绑定信用卡.一定要填写正确的手机,因为验证方式是它 ...
- nodejs实现文件的拷贝复制
var fs = require( 'fs' ), stat = fs.stat; /* 05 * 复制目录中的所有文件包括子目录 06 * @param{ String } 需要复制的目录 07 * ...
- 生成pyd文件时提示“Unable to find vcvarsall.bat”的问题
本文内容 Unable to find vcvarsall.bat的问题描述 问题分析 总结 一.问题描述 我们在windows下通过pip安装一些外部Python 模块(比如,pycrypto)时通 ...
- 当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出?
当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出? 问题: orderStatus 和 payStatus都是枚举类,并且枚举的个数达地10来个,我们不可能在模板页面(jsp/ftl ...
- 20170814xlVBA限定日期按客户分类汇总
原始数据表: 汇总格式: Sub subtotalDic() Dim Wb As Workbook Dim Sht As Worksheet Dim oSht As Worksheet Dim mYe ...