一. 包

  一个含有__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 模块的更多相关文章

  1. python-时间模块,random、os、sys、shutil、json和pickle模块

    一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...

  2. python模块(json和pickle模块)

    json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...

  3. Python json和pickle模块

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

  4. Python之时间模块、random模块、json与pickle模块

    一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...

  5. python常用模块之json、pickle模块

    python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...

  6. os模块,sys模块,json和pickle模块,logging模块

    目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...

  7. 模块讲解---os模块,sys模块,json和pickle模块,logging模块

    目录 模块的用法 os模块 常用的功能 sys模块 常用的功能 json和pickle模块 4. logging模块 模块的用法 通过 import 或者from......import...... ...

  8. 第十章、json和pickle模块

    目录 第十章.json和pickle模块 一.序列化 二.json 三.pickle模块 第十章.json和pickle模块 一.序列化 把对象(变量)从内存中变成可存储或传输的过程称之为序列化, 序 ...

  9. python(6)- json和pickle模块

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

随机推荐

  1. Codeforces 600E. Lomsat gelral(Dsu on tree学习)

    题目链接:http://codeforces.com/problemset/problem/600/E n个点的有根树,以1为根,每个点有一种颜色.我们称一种颜色占领了一个子树当且仅当没有其他颜色在这 ...

  2. OpenModelica Debug

    assertion只触发一次 The gdb process has not responded to a command within 40 second(s).This could mean it ...

  3. 力扣(LeetCode)976. 三角形的最大周长

    给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的.面积不为零的三角形的最大周长. 如果不能形成任何面积不为零的三角形,返回 0. 示例 1: 输入:[2,1,2] 输出:5 示例 2 ...

  4. 牛客国庆集训派对Day3 B Tree

    Tree 思路: 树形dp 注意0不存在逆元,任何一个数乘以0就变成0了,就没有价值浪,所以要暴力转移 代码: #pragma GCC optimize(2) #pragma GCC optimize ...

  5. C#中的var

    var关键字是C#3.0开始新增的特性,称为推断类型(其实也就是弱化类型的定义). var a =23: 则a是整型,var a = “lgs”:则a是字符型,但使用Var类型要注意: 1.必须在定义 ...

  6. redis在php运行时出现错误

    我的redis版本:3.2.8. redis安装教程,参考官方网站: https://redis.io/download 在网上多番查找,很多说是配置文件redis.conf中的: # bind 12 ...

  7. idea maven环境下 java实现发送邮件验证

    1.开通smtp授权 QQ邮箱-设置-账户-开启 得到一个授权码 2.下载javax.email包 maven项目中 pom文件加入: <dependency> <groupId&g ...

  8. Ubuntu更改源和搜狗输入法安装卸载

    安装完Ubuntu 16.04后,要更换为国内的软件源: sudo gedit /etc/apt/sources.list   #用文本编辑器打开源列表 在文件开头添加下面的阿里云的软件源: deb ...

  9. 图像识别 | AI在医学上的应用 | 深度学习 | 迁移学习

    参考:登上<Cell>封面的AI医疗影像诊断系统:机器之心专访UCSD张康教授 Identifying Medical Diagnoses and Treatable Diseases b ...

  10. 浅谈微服务架构、容器技术与K8S

    关注嘉为科技,获取运维新知 企业应用系统:从单体应用走向微服务架构:从裸金属走向容器. 如果在诸多热门云计算技术诸如容器.微服务.DevOps.OpenStack等之中,找出一个最火的方向,那么可能非 ...