最新消息:20210917 已从crifan.com换到crifan.org

【已解决】anytree中打印出Tree树的结构文字版和图片版

图片 crifan 608浏览 0评论
折腾:
【未解决】Python中如何实现Tree树结构且带辅助数据以便于后续计算
期间,
然后再去打印出 tree树状结构图 文字版
用代码:
fakeRootNodeId = "fakeroot0000"
fakeRootNode = Node(fakeRootNodeId)


for eachFinalRootNode in rootNodeList:
  if eachFinalRootNode.parent:
    print("eachFinalRootNode=%s" % eachFinalRootNode)
  else:
    eachFinalRootNode.parent = fakeRootNode


# for debug
for pre, fill, node in RenderTree(fakeRootNode):
  # print("pre=%s,fill=%s,node=%s" % (pre, fill, node))
  print("%s%s" % (pre, node.name))
终于打印出了 文字版的树结构:
akeroot0000
├── aaaaaaaa5522
│   ├── wyj121212121
│   ├── wyf333222111
│   ├── tzf123451234
│   ├── jch123123123
│   └── ha1234512345
├── aaaaaaaaaaay
│   └── ancdefg12345
│       └── abcd12345555
├── aaabbbb52152
│   └── zzzzxxx55555
├── aaawwww12345
│   └── fbbd55432112
├── abcabc123123
│   └── cj1234512345
├── abcccc123321
│   └── abcccc123333
├── abcd21213135
│   └── shuai2123451
├── abcdef111111
│   └── aaa222222222
├── abcdefgh1234
│   └── dongyuhai111
├── abfsd1231234
│   └── adfsf1111222
│       └── abfsd2223333
├── adc234adc234
│   └── jbp123123123
├── adminccc1111
│   ├── sunxijun1111
│   │   ├── sxj111222444
│   │   └── sxj111222333
│   └── zhouccc33333
├── az1234512345
│   └── aa1234512345
│       ├── abcdefg12341
│       ├── yycczrp13141
│       ├── fxj555555555
│       ├── aa1234512333
│       │   └── aa1234512334
│       ├── ac1234512345
│       ├── chen11111111
│       ├── cys111333555
│       ├── taishanshi22
│       └── ch1111155555
├── azccc1112223
│   └── cccamtf55555
│       ├── huanglijing1
│       ├── zw1111111111
│       └── mjr12345abcc
├── cccandadc555
│   └── wabjtam12345
│       └── wabjtam12341
├── cccc11113333
│   └── zhangzichen1
│       └── sinweiss5132
├── chen11223344
│   └── chen44332211
├── chengjj11234
│   └── chengjj11223
├── ckj111222333
│   ├── bah123123321
│   ├── zcl123412345
│   │   └── zcl111222333
│   ├── cccqqqbbb111
│   ├── chr122222555
│   ├── cxw123123123
│   └── libaizhuan12
├── cxl111222333
│   └── zzhh11122233
├── ddd113113113
│   └── cccccc555555
├── ericzhangshi
│   └── markzhangshi
├── gao111222333
│   └── ajiaxyz12345
├── gdzhaqowen33
│   └── owenowenowen
├── gg2222222222
│   └── liuzhiming11
├── gg3333333333
│   └── mo1234512345
│       ├── mo1212121212
│       ├── aaaa13141314
│       │   ├── dddd13141314
│       │   │   ├── lgn131413141
│       │   │   ├── lyc123123123
│       │   │   ├── dyd131413145
│       │   │   └── lixiao123451
│       │   └── ccc113141314
│       ├── wozhanglixia
│       └── chenyuming11
├── gsw123451234
│   └── gsw123451231
├── guo111222333
│   └── guo333222111
├── haifengl2233
│   └── shujin131422
├── hh1234512345
│   └── hhh123123123
├── hmsm11111111
│   └── hmfs12341234
├── hongzhib1234
│   └── honfzhib2345
├── hqj123zwy123
│   └── zwy123hqj123
├── huanglijing1
│   └── zqlzqlzql222
├── king55555555
│   └── kimg44444444
├── ld1234512345
│   └── zx1234512345
├── lgw123451234
│   └── lgw123451111
├── lishan131313
│   └── liudx1231235
├── liyujie11221
│   └── cccwjhz12345
├── lu1234512345
│   └── nan123451234
├── lxj111115552
│   └── lxj111115553
├── lyc123123123
│   ├── ghi123123123
│   │   └── mnb123123123
│   ├── asd123123123
│   │   └── asm123123123
│   ├── aqw123123123
│   ├── wuxianghua13
│   └── hh5432154321
│       └── yy1234554321
├── majibin12345
│   └── majibin22345
├── mjr12345abcc
│   └── mjr212345ccc
│       ├── shj11314cccc
│       ├── yaozhenmin12
│       ├── aa3333333333
│       │   └── xtsxtsxts123
│       ├── lishuwei1234
│       ├── gbllfsggnfd1
│       ├── cai123123123
│       ├── qwerthyuiopa
│       ├── ntcaima12345
│       ├── zixiong55555
│       ├── liuguangtao1
│       ├── gyy111222333
│       ├── a12345123453
│       │   ├── jgxhxhyq5555
│       │   ├── z13133351311
│       │   ├── xiepeiwen123
│       │   ├── lwy123451235
│       │   │   └── k12345123455
│       │   ├── zyqdsld12345
│       │   ├── xinhongbo123
│       │   ├── c11223344551
│       │   ├── h12345543211
│       │   └── z11122233355
│       ├── mm125125aaaa
│       ├── yang55555555
│       ├── zxcvbnm12345
│       ├── huzhengping2
│       ├── azazazz12345
│       ├── adc155315533
│       ├── aabbcc222333
│       ├── abclike12345
│       │   └── abcgaoxin123
│       ├── gh1235432122
│       ├── abcabcabcabc
│       ├── wwwwyyyyllll
│       ├── kkk123123123
│       ├── kangxiaoguan
│       ├── aaa111ccc123
│       │   └── aaa333bbb111
│       ├── runmao112345
│       ├── abcabc112345
│       │   ├── fanfan131415
│       │   ├── xiaofang1234
│       │   ├── junzilan1235
│       │   ├── jingcheng123
│       │   ├── xiaomage1314
│       │   └── mawen1234555
│       ├── abcdefj12341
│       ├── qwerty123451
│       ├── yangyun12345
│       └── sygs12345ljd
├── qwerthyuiopa
│   ├── zengjunping1
│   │   └── yanming41314
│   ├── qwertyuiop35
│   ├── qwertyuiop44
│   ├── qwertyuiop55
│   ├── qwertyuiop22
│   ├── qazwsxedc324
│   ├── qwertyuiop25
│   ├── qwertyuiop15
│   └── qwertyuiop13
├── r12223334444
│   └── r21112223333
├── rongxifushi1
│   └── jialongsheng
├── runmao112345
│   ├── caicai112233
│   │   ├── zmgzmg123451
│   │   ├── huawei123451
│   │   ├── qwertyuiop12
│   │   ├── shi111222333
│   │   ├── lili12312312
│   │   ├── zhichao12122
│   │   ├── zhouzhou1234
│   │   ├── jackey111111
│   │   │   ├── eason1122345
│   │   │   ├── paul12341234
│   │   │   └── boxcai111111
│   │   ├── aaaaabbb1111
│   │   └── aaaaaab12345
│   ├── whylxqw12345
│   ├── asd332211123
│   ├── mmmmmmm12345
│   ├── xuwenquan123
│   │   └── jinfeng12345
│   ├── huanghc12345
│   ├── ahaoahaoahao
│   ├── haiyong12345
│   ├── az1515151515
│   ├── a12345543212
│   ├── az1351351351
│   └── cgxxxxx12345
├── savagemao222
│   └── savagemao333
├── shj11314cccc
│   ├── yy12345ccccc
│   ├── liu12345cccc
│   │   ├── jrn12345cccc
│   │   │   ├── dhh12345cccc
│   │   │   │   ├── yzy12345cccv
│   │   │   │   ├── abcdefg12222
│   │   │   │   └── mff12345cccv
│   │   │   ├── lzc12345cccc
│   │   │   ├── wzywzy123123
│   │   │   ├── jrn12345accc
│   │   │   └── duan12341234
│   │   ├── li12345ccccc
│   │   │   ├── yang12345ccc
│   │   │   ├── cheng12345cc
│   │   │   ├── jr12345ccccc
│   │   │   ├── ai12345ccccc
│   │   │   └── qu12345ccccc
│   │   ├── wzy12345cccc
│   │   ├── plj12345pljc
│   │   ├── zz12345ccccc
│   │   ├── wang123huicc
│   │   ├── wl1231231233
│   │   ├── gyq111222333
│   │   │   └── gyl111222333
│   │   │       └── xhd111222333
│   │   ├── wyj111111112
│   │   ├── www123123www
│   │   ├── azw12345cccc
│   │   ├── wyz123123ccc
│   │   ├── zhangweiqi55
│   │   ├── wanw12345ccc
│   │   ├── zyq12345cccc
│   │   ├── xyx12345cccc
│   │   ├── zhou12345ccc
│   │   ├── wang12345ccc
│   │   ├── liujun343434
│   │   │   ├── szj123455ccc
│   │   │   ├── cccccsy12345
│   │   │   └── srlcccccc123
│   │   ├── gong12345ccc
│   │   └── song1144cccc
│   ├── sy12345ccccc
│   │   ├── cy12345ccccc
│   │   ├── fj12312ccccc
│   │   ├── ah1234512345
│   │   ├── hs123123cccc
│   │   ├── qinqin123123
│   │   │   └── gaoshan12345
│   │   │       ├── cccwfmccc555
│   │   │       ├── cccgqp555555
│   │   │       └── wangfj123123
│   │   ├── hll12345cccc
│   │   ├── mmq12345cccc
│   │   └── lyp12345cccc
│   ├── fjx12345cccc
│   ├── cui1234ccccc
│   │   ├── zsh111222333
│   │   ├── fu1234512345
│   │   │   ├── zy1234512345
│   │   │   └── sjzzht131413
│   │   └── guo12345cccc
│   ├── yjm12345cccc
│   ├── lwh12345cccc
│   ├── hy1234512345
│   ├── lq1234512345
│   ├── zxehlfy12345
│   ├── hong12345ccc
│   ├── liuhong12345
│   ├── fsq12345cccc
│   └── wyd12345cccc
├── shuluchao125
│   └── zhouzhen1234
│       └── shuqian12345
│           └── shuyue123123
├── srlcccccc123
│   ├── a12341234123
│   │   └── a12341234121
│   └── chen12345ccc
├── sxkwk1314131
│   ├── zwq131411413
│   └── szhwk1314131
├── sygs12345ljd
│   ├── n21tlj123123
│   └── sygsljd12345
│       └── sygs12345stt
│           ├── leibo1313131
│           ├── liuwei123455
│           ├── liankanglian
│           ├── abc54321xyzm
│           │   └── wyx12345abcd
│           └── wahaa1231233
├── syn112233445
│   └── syn111222333
├── taishanshi22
│   └── qingsong2233
├── w12345123452
│   └── w12345123453
│       └── zlx123451234
├── wang12345ccc
│   ├── wme12345cccc
│   ├── gxm12345cccc
│   ├── song12345ccc
│   ├── qingliangccc
│   ├── gjzgccc12345
│   ├── xinping12345
│   └── gege12345ccc
├── wanganle1234
│   └── wanganle2345
│       ├── wanganle3345
│       ├── liguangb1234
│       ├── lufang123123
│       ├── lihuaidong55
│       ├── maruxiang123
│       ├── yushengye123
│       ├── limeixia1234
│       │   └── zhouyimin123
│       ├── liuhui123123
│       ├── xuhao1234123
│       └── yangguix1234
├── wangfj123123
│   └── fengjv123123
├── wangxt141313
│   └── mazhiling113
├── wd1112223333
│   └── gf1213141555
├── wjx123412345
│   └── wjx123123123
├── wozhanglixia
│   ├── panxiangjiao
│   │   └── cccjxn122334
│   ├── momodadadada
│   │   └── gxfgxfgxfgxf
│   │       └── ccwccwccwccw
│   ├── chengfang113
│   │   ├── cccyjqaaaccc
│   │   └── chenying1234
│   ├── smh123443211
│   ├── aadfeddaa123
│   ├── zx2342111111
│   ├── luoxiaogan11
│   ├── abcabcd12345
│   ├── syxlwba12345
│   │   ├── aryczwz12345
│   │   └── wrr111222333
│   ├── sdc421254321
│   │   ├── zclabcd51424
│   │   ├── aaazzza12345
│   │   │   ├── wb1234123433
│   │   │   └── zzzaaac12345
│   │   ├── cncbk4212543
│   │   ├── yuangang1234
│   │   ├── abcabcdef123
│   │   ├── lyg411511114
│   │   ├── hhanbin12345
│   │   ├── sunxiaoyan22
│   │   ├── liu1234lin55
│   │   ├── aaayyy542131
│   │   ├── a4313233534a
│   │   ├── wrp123412345
│   │   ├── caihuang1234
│   │   ├── guanpeng1111
│   │   ├── xutengzhan11
│   │   └── abcdmfhg1234
│   ├── ql1234512345
│   ├── abcabcabc123
│   ├── ll1234512345
│   ├── lhmtyhjrwx12
│   ├── wangfeng3333
│   ├── zhangheran13
│   ├── minghuan1122
│   ├── azsxdcf55555
│   ├── huchengbo123
│   ├── nan134141434
│   ├── aaaccc111111
│   ├── mp1234512345
│   ├── byp121212121
│   └── a13333333333
├── wrr111222333
│   └── wrrr11222333
│       ├── yu1234512345
│       ├── ty1112223335
│       ├── rt1425142533
│       ├── we1122334455
│       ├── cd1234554321
│       ├── qb1234512345
│       │   └── qb5432154321
│       ├── qb1231234545
│       ├── asdfghjkl555
│       ├── as1122334455
│       └── asdzxc555555
├── wushuping123
│   └── asdf12312313
├── wwwwyyyyllll
│   └── llllqqqqffff
│       └── hhhhjjjjyyyy
│           └── ggggxxxxhhhh
├── wx1351111213
│   ├── az2222222222
│   └── bb1234512345
├── wxb555555555
│   └── xcp555555555
├── wyz123123ccc
│   └── zxq222413413
├── x12222222222
│   └── x11222222222
│       └── cad123412341
├── xdanlin12123
│   └── bgbgbg223333
├── xtsxtsxts123
│   └── xtsxtsxts333
├── xusqbao12131
│   ├── xhxhxhxh2222
│   ├── tdtdtd111122
│   ├── tdhao1111222
│   ├── ccctoken2222
│   └── aaacccaa1234
├── xwy123123123
│   └── xwy111122222
├── xy2222222222
│   └── qq3333322222
├── xzh111111111
│   └── xzh222222222
├── yry111222333
│   └── yry222333444
├── ysmzqj111222
│   └── cxvin1122345
├── yushengye123
│   ├── xuyanqing555
│   └── xuyanqing123
├── z13133351311
│   ├── asdhkjz13223
│   ├── h11122334455
│   ├── yiyi12312312
│   ├── guoguo543211
│   ├── zhenxuzhao21
│   ├── lf1234554321
│   └── zsc111111111
├── zd1122334455
│   └── zd1234512345
├── zhangdongcqg
│   └── qianhaiyan43
├── zhanghaiping
│   └── ccczhp123123
├── zhanglei1111
│   ├── zhanglei2222
│   └── houxingyun11
├── zhimengke125
│   └── z11122233345
├── zixiong55555
│   ├── wx1234512345
│   ├── gganjianying
│   └── youmm3333333
├── zjtzsm112345
│   └── zjtzsm122345
├── zsh111222333
│   ├── zxa12345cccc
│   │   └── wyj12345cccc
│   ├── whj12345cccc
│   ├── zhangpeng123
│   └── hxy111222333
├── zxczxc123321
│   └── qwerqwer1234
├── zy1234512345
│   └── zpg123451234
├── zyx555111333
│   ├── yp1234512345
│   ├── yxz112131415
│   └── ffwwyy222333
└── zz12345ccccc
    └── neo12345cccc
然后再去,想办法,打印出树结构的图片:
GitHub – c0fec0de/anytree: Python tree data library
>>> from anytree.exporter import DotExporter
>>> # graphviz needs to be installed for the next line!
>>> DotExporter(udo).to_picture("udo.png")
去试试:
【已解决】Mac中安装Python的graphviz
另外从
GitHub – c0fec0de/anytree: Python tree data library
看到说是有更多其他的exporter
Exporter — anytree 2.8.0 documentation
  • * Dictionary Exporter
  • * JSON Exporter
  • * Dot Exporter
可以导出各种
Dictionary Exporter — anytree 2.8.0 documentation
>>> from collections import OrderedDict
>>> exporter = DictExporter(dictcls=OrderedDict, attriter=sorted)
>>> pprint(exporter.export(root))
OrderedDict([('a', 'root'),
             ('children',
              [OrderedDict([('a', 'sub0'),
                            ('children',
                             [OrderedDict([('a', 'sub0A'), ('b', 'foo')]),
                              OrderedDict([('a', 'sub0B')])])]),
               OrderedDict([('a', 'sub1')])])])
JSON Exporter — anytree 2.8.0 documentation
>>> exporter = JsonExporter(indent=2, sort_keys=True)
>>> print(exporter.export(root))
{
  "a": "root",
  "children": [
    {
      "a": "sub0",
      "children": [
        {
          "a": "sub0A",
          "b": "foo"
        },
        {
          "a": "sub0B"
        }
      ]
    },
    {
      "a": "sub1"
    }
  ]
}
-》抽空可以去导出:
dict或json
继续写代码:
from anytree.exporter import DotExporter

DotExporter(fakeRootNode).to_picture("Relation.png")
结果:
Relation.png
2.6MB 横向的,很长
放大后可以看到效果:
然后另外,再去导出json版:
dict版本是类似的,就不导出了。
JSON Exporter — anytree 2.8.0 documentation
exporter = JsonExporter(indent=2, sort_keys=True)
print(exporter.export(root))
最后:
from anytree.exporter import DotExporter, JsonExporter

jsonExporter = JsonExporter(indent=2, sort_keys=True)
treeJsonStr = jsonExporter.export(fakeRootNode)
treeJson = json.loads(treeJsonStr)
saveJsonToFile("output/Relation.json", treeJson)
输出我们要的json了:
即可。
【总结】
最后用相关代码:
from anytree import Node, RenderTree

for pre, fill, node in RenderTree(fakeRootNode):
  # print("pre=%s,fill=%s,node=%s" % (pre, fill, node))
  print("%s%s" % (pre, node.name))
输出:
akeroot0000
├── aaaaaaaa5522
│   ├── wyj121212121
│   ├── wyf333222111
│   ├── tzf123451234
│   ├── jch123123123
│   └── ha1234512345
├── aaaaaaaaaaay
│   └── ancdefg12345
│       └── abcd12345555
。。。
用:
from anytree.exporter import DotExporter, JsonExporter


treeJsonStr = jsonExporter.export(fakeRootNode)
treeJson = json.loads(treeJsonStr)
saveJsonToFile("output/Relation.json", treeJson)
输出:
{
  "children": [
    {
      "children": [
        {
          "name": "wyj121212121"
        },
        {
          "name": "wyf333222111"
        },
        {
          "name": "tzf123451234"
        },
        {
          "name": "jch123123123"
        },
        {
          "name": "ha1234512345"
        }
      ],
      "name": "aaaaaaaa5522"
    },
...
   {
      "children": [
        {
          "name": "neo12345cccc"
        }
      ],
      "name": "zz12345ccccc"
    }
  ],
  "name": "fakeroot0000"
}
用:
from anytree.exporter import DotExporter, JsonExporter

DotExporter(fakeRootNode).to_picture("output/Relation.png")
输出:
树的结构的图片:

转载请注明:在路上 » 【已解决】anytree中打印出Tree树的结构文字版和图片版

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
90 queries in 0.173 seconds, using 23.40MB memory