Comments (3)
I found a much better solution that works amazingly well. Treelib trees and nodes are fully serializable, which allows the Pickle module to save the tree as a binary file. Doing this is surprisingly fast, even when working with trees that are megabytes in size.
def SaveTree(self, savepath_pickle):
with open(savepath_pickle, "wb") as file:
pickle.dump(self.tree, file)
def LoadTree(self, loadpath_pickle):
with open(loadpath_pickle, 'rb') as file:
self.tree = pickle.load(file)
from treelib.
Is there another (simple) way to load a tree from json without saving it ?
from treelib.
I had to parse the JSON dictionary/list structure to reconstruct the Tree object:
import json
from pathlib import PurePosixPath, Path
from treelib import Node, Tree
def LoadTreeJSON(self, loadpath_json=None):
if loadpath_json is None:
loadpath_json = self.GetFilePathJSON()
if loadpath_json is None:
return
with open(loadpath_json) as file:
self.tree = Tree()
data = json.load(file)
for key1, value1 in data.items():
node1=PurePosixPath(key1)
self.tree.create_node(tag=key1, identifier=str(node1), parent=None)
for list1 in value1['children']:
for key2, value2 in list1.items():
node2=PurePosixPath(key1, key2)
self.tree.create_node(tag=key2, identifier=str(node2), parent=str(node1))
for list2 in value2['children']:
for key3, value3 in list2.items():
node3=PurePosixPath(key1, key2, key3)
self.tree.create_node(tag=key3, identifier=str(node3), parent=str(node2))
for list3 in value3['children']:
if isinstance(list3, dict): # Process Only Filled Directories
for key4, value4 in list3.items():
node4=PurePosixPath(key1, key2, key3, key4)
self.tree.create_node(tag=key4, identifier=str(node4), parent=str(node3))
for list4 in value4['children'][0:]:
node5=PurePosixPath(key1, key2, key3, key4, list4)
self.tree.create_node(tag=list4, identifier=str(node5), parent=str(node4))
from treelib.
Related Issues (20)
- Cannot understand how to use 'successors' HOT 1
- Any method to add weight to edges? HOT 1
- how to replace a node with a new tree HOT 2
- how to insert a node in a tree? HOT 2
- Possible memory leak due to deepcopy ?
- Modifying a node's identifier with the . and = operator breaks the tree
- Update python version support! HOT 2
- Get truncated tree at a given depth
- Finding the nodes between two nodes HOT 1
- Problem exporting to JSON and dict
- potential bug for data parameter in Node
- Give treelib a performance improvement and persistence using leveldb/rocksdb HOT 1
- Treelib not working any longer on Google colab or https://jupyter.org/ HOT 3
- Render tree expanding only ancestors of given node
- tree.show prints binary literal to stdout HOT 4
- [Win] pip install treelib not working | Unable to download treelib library
- get error when do Huffman Coding
- change the keys in _nodes
- tree.show(), print bytes at stdout HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from treelib.