Python代码到流程图。
pyflowchart的Python项目详细描述
PY流程图
PyFlowchart是一个用于:
- 用Python编写流程图
- 把Python源代码翻译成流程图。在
PyFlowchart以flowchart.jsflowchart DSL生成流程图,DSL是一种广泛使用的流程图文本表示。通过flowchart.js.org,francoislaberge/diagrams,或者一些降价编辑器,很容易将这些流程图文本转换成图片。在
获取PyFlowchart
$ pip3 install pyflowchart
Python中的流程图
包含flowchart.js节点类型的PyFlowchart:
- 起始点
- 操作节点
- 条件节点
- InputOutputNode
- 子程序
- 端节点
节点可以通过connect()
方法连接(connect_{yes|no}
表示ConditionNode)。在
获取带有起始节点的流程图,并调用其flowchart()
方法来生成流程图.jsDSL流程图:
输出:
st4471442960=>start: start a_pyflow_test
op4471442064=>operation: do something
cond4471501392=>condition: Yes or No?
io4471501648=>inputoutput: output: something...
e4471501904=>end: end a_pyflow_test
sub4471501584=>subroutine: A Subroutine
st4471442960->op4471442064
op4471442064->cond4471501392
cond4471501392(yes)->io4471501648
io4471501648->e4471501904
cond4471501392(no)->sub4471501584
sub4471501584(right)->op4471442064
转到http://flowchart.js.org并将生成的文本表示转换为SVG流程图:
另外,许多降价编辑器(例如,typera)也支持这种流程图语法。如果您喜欢CLI,请参见francoislaberge/diagrams。在
Python到流程图
PyFlowchart还可以将Python代码转换为流程图。在
例如,您得到一个simple.py
:
deffoo(a,b):ifa:print("a")else:foriinrange(3):print("b")returna+b
在CLI中运行PyFlowchart以生成流程图代码:
$ python3 -m pyflowchart simple.py
# output flowchart code.
或者,在Python中
>>>frompyflowchartimportFlowchart>>>withopen('simple.py')asf:...code=f.read()...>>>fc=Flowchart.from_code(code)>>>print(fc.flowchart())# output flowchart code.
高级用法
- 指定生成流程图的代码字段(新功能:v0.1.0)
# example.pyprint("start")deffoo():foo="foo"classBar():defbuzz(self,f):defg(self):print("g")f(self)returng(self)Bar().buzz(foo)print("end")
要生成Bar.buzz.g
的流程图:
# PythonfrompyflowchartimportFlowchartwithopen('example.py')asf:code=f.read()fc=Flowchart.from_code(code,field='Bar.buzz.g',inner=False)print(fc.flowchart())
# CLI
python3 -m pyflowchart example.py -f Bar.buzz.g
输出结果:
from_code
定义为:
Flowchart.from_code(code,field='',inner=True)
PyFlowchart CLI是此函数的接口:
python3 -m pyflowchart [-h][-f FIELD][-i] code_file
磁场
field
是指向要绘制流程图的字段(即函数)的路径。对于上面的example.py
,可用路径为:
- "" (means the whole code)
- "foo"
- "Bar.buzz"
- "Bar.buzz.g"
内部
inner
控制解析器的行为。技术上,inner=True
表示解析field.body
,而{inner=True
,pyflowchart将查找字段,否则它将字段作为节点。在
对于CLI,添加参数-i
意味着inner=True
,否则inner=False
。在
美化流程图
自行修改生成的流程图代码。在
托多
- []生成流程图SVG/HTML。在
$ pyflowchart example.py -o flowchart.svg
取决于节点.js以及流程图.js. 在
- []PyFlowchart图形用户界面
好吧,我想PyFlowchart的^{str1}$GUI可能很了不起。将您的代码粘贴到其中,流程图DSL将及时生成,流程图将显示在一旁。在
- []中国人让你的朋友们等待!在
遗憾的是,我太忙了(这个词的发音是[ˈlеizi]
——lazy)来编写这些想法。请把我推上去。或者,你自己去做吧。我迫不及待地感谢你的伟大贡献!在
参考文献
许可证
版权所有2020 CDFMLR。版权所有。在
根据麻省理工学院的许可证。在
- 项目
标签: