1、Json与pickle
json数据序列化:
# Author: Mr.Xue
# 2019.10.24
import json
info = {
'name': 'xue',
'age': 23
}
with open("test.txt", 'w') as f:
f.write(json.dumps(info))
json数据反序列化:
# Author: Mr.Xue
# 2019.10.24
import json
with open("test.txt", 'r') as f:
data = json.loads(f.read())
print(data["age"])
pickle数据序列化:
# Author: Mr.Xue
# 2019.10.24
import pickle
def sayhi(name):
print("hello, ", name)
info = {
'name': 'xue',
'age': 23,
"func": sayhi
}
with open("test.txt", 'wb') as f:
f.write(pickle.dumps(info)) # pickle.dump(info, f)
pickle数据反序列化:
# Author: Mr.Xue
# 2019.10.24
import pickle
def sayhi(name):
print("hello2, ", name)
with open("test.txt", 'rb') as f:
data = pickle.loads(f.read()) #data = pickle.load(f)
print(data["func"]("Mr.Xue"))
小结:
- json只能处理dic、list、str等简单的数据类型
- pickle能够处理函数这些复杂的类型
2、软件目录结构规范
我们设计一个层次清晰的目录结构,就是为了达到以下两点:
- 可读性高:不熟悉这个项目的代码的人,一眼就看懂目录结构,知道程序启动脚本是哪个,测试目录在哪里,配置文件在哪里等等。从而非常快速的了解这个项目。
- 可维护性高:定义好组织规则后,维护者就能够很明确的知道,新增的哪个文件和代码应该放在什么目录之下。这个好处是,随着时间的推移,代码/配置的规模增加,项目结构不会混乱,仍然能够组织良好。
下面有一个项目的目录结构供参考,
简单解释一下:
- bin/:存放项目的一些可执行文件,当然你可以起名script/之类的也可以。
- foo/:存放项目的所有源代码。(1)源代码中的所有模块、包都应该放在此目录。不要置于顶层目录;(2)其子目录test/存放单元测试代码;(3)程序的入口最好命名为main.py
- docs/:存放一些文档
- setup.py:安装、部署、打包的脚本
- requirements.txt:存放软件依赖的外部Python包列表
- README:项目说明文件
关于README的内容,它需要说明以下几个事项:
- 软件定位,软件的基本功能
- 运行代码的方法:安装环境、启动命令等
- 简要的使用说明
- 代码目录结构说明,更详细点可以说明软件的基本原理
- 常见问题说明
可以参考Redis源码中Readme Readme的写法,这里面简洁但是清晰的描述了Redis功能和源码结构。
具体可参考:https://www.cnblogs.com/alex3714/articles/5765046.html