Python代码到流程图。

pyflowchart的Python项目详细描述


PY流程图

PyFlowchart是一个用于:

  • 用Python编写流程图
  • 把Python源代码翻译成流程图。在

PyFlowchart以flowchart.jsflowchart DSL生成流程图,DSL是一种广泛使用的流程图文本表示。通过flowchart.js.orgfrancoislaberge/diagrams,或者一些降价编辑器,很容易将这些流程图文本转换成图片。在

获取PyFlowchart

$ pip3 install pyflowchart

Python中的流程图

包含flowchart.js节点类型的PyFlowchart:

  • 起始点
  • 操作节点
  • 条件节点
  • InputOutputNode
  • 子程序
  • 端节点

节点可以通过connect()方法连接(connect_{yes|no}表示ConditionNode)。在

获取带有起始节点的流程图,并调用其flowchart()方法来生成流程图.jsDSL流程图:

^{pr2}$

输出:

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流程图:

screenshot on flowchart.js page

另外,许多降价编辑器(例如,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.

result

高级用法

  • 指定生成流程图的代码字段(新功能: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

输出结果:

result

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将查找字段,否则它将字段作为节点。在

pyflowchart_inner

对于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。版权所有。在

根据麻省理工学院的许可证。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaEclipseMars没有保存首选项   java梯度同步失败:原因:启动失败:   java如何从嵌套的JSON获取数据?   java如何判断可观察对象中的任何对象满足一个条件?   java将字符串转换为保持相同值的byte[]数组   java有没有办法绕过AuditingEntityListener为测试设置数据?   从/usr/share/java中解析linux JAR依赖关系   安卓 My java函数抛出nullpointerexception?   java Gradle使用正确版本的依赖项   JBoss和Java6中带注释的WebService中的web服务ClassCastException   java如何修复codename one中的简单逻辑错误?   java如何迭代矩阵的索引?   java如何在JPanel不可见时将其保存为图像?   java HashMap如何在Kotlin中实现MutableMap接口?   javascript如何在单击后加载特定片段?   EclipseJava为纳什均衡获取所有玩家/策略组合   JavaSpring:Web服务REST在JSON上产生双反斜杠   java为什么ServletContext#getRealPath(“/”)返回相对路径?   java当我的游戏应该重新启动时,我应该如何处理重置SurfaceView和线程?