python 树结构

树的保存与读取(pickle模块)

为什么先说读取呢?
。。。
做项目没有保存,做什么都是一次性的!

import pickle

def store_tree(input_tree, filename):
    # 序列化树结构,存入文件
    fw = open(filename, 'wb')
    pickle.dump(input_tree, fw, 0)
    fw.close()
def grab_tree(filename):
    # 将文件转换为树结构到内存
    fr = open(filename, 'rb')
    return pickle.load(fr)

wb:二进制写模式
rb:二进制读模式

open的时候有4中模式,默认是第三模式,这里要想正确读出只能选择0模式,即ASCII模式。
0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;
1:老式的二进制协议;
2:2.3版本引入的新二进制协议,较以前的更高效。
其中协议0和1兼容老版本的python。protocol默认值为3。
这里用0模式
例:

tree = Tree()
tree.create_node('root', 'root')
tree.create_node('child_1', 'child_1', parent = 'root')
tree.create_node('child_3', 'child_3', parent = 'root')
tree.create_node('child_3', 'child_4', parent = 'root')
tree.create_node('child_2', 'child_2', parent = 'child_3')
print('----------')
tree.show()
print('----------')
store_tree(tree, 'gjl_tree')
tree_ = grab_tree('gjl_tree')
tree_.show()
print('----------')

结果:

----------
root
├── child_1
├── child_3
│   └── child_2
└── child_3

----------
root
├── child_1
├── child_3
│   └── child_2
└── child_3

----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值