一个用于区分JSON和XML等树型文件的实用程序。

graphtage的Python项目详细描述


图表

PyPI versionTestsSlack Status

Graphtage是一个命令行实用程序,underlying library 用于语义上比较和合并树状结构,如JSON、XML、HTML、YAML和CSS文件。它的名字是 “图形”和“嫁接”的组合体-后者是将两棵树连接在一起的园艺实践 他们一起成长。在

安装

$ pip3 install graphtage

命令行用法

输出格式

Graphtage对与的文件类型分离的树的中间表示形式执行is分析 输入文件。这意味着,例如,您可以将JSON文件与YAML文件进行比较。另外,输出格式可以是 不同于输入格式。默认情况下,Graphtage将以与 第一个输入文件。但是,例如,可以区分两个JSON文件,并在YAML中格式化输出。有几个 指定这些转换的命令行参数;有关详细信息,请检查--help输出。在

默认情况下,Graphtage会使用尽可能多的换行符和缩进来打印输出。在

^{pr2}$

使用--join-lists-jl选项取消列表项后的换行符:

{"foo":[1,2,3],"bar":"baz"}

同样,使用--join-dict-items-jd选项来抑制dict中键/值对后的换行符:

{"foo":[1,2,3],"bar":"baz"}

使用--condensed或{}应用这两个选项:

{"foo":[1,2,3],"bar":"baz"}

--only-edits-e选项将打印出编辑列表,而不是将它们应用到输入文件中。在

匹配选项

默认情况下,Graphtage尝试匹配字典中所有可能的元素对。虽然在计算上是可行的, 对于具有巨大词典的输入文件,这有时会很麻烦。改为使用--no-key-edits-k选项 只尝试匹配共享同一个键的字典项,从而大大减少了计算量。同样地 --no-list-edits或{}选项在比较两个列表时不会考虑间隙插入和删除。这个 --no-list-edits-when-same-length-ll选项是-l的一个不那么激烈的版本,它对列表的行为正常 长度不同,但对于长度相同的列表,其行为类似于-l。在

ANSI颜色

默认情况下,Graphtage只有在从TTY运行时才会在输出中使用ANSI color。例如,如果你想 要让Graphtage从脚本或管道发出彩色输出,请使用--color-c参数。禁用偶数颜色 在TTY上运行时,使用--no-color。在

HTML输出

Graphtage可以选择使用--html选项在HTML中发出diff。在

$ graphtage --html original.json modified.json > diff.html

状态和日志

默认情况下,Graphtage将状态消息和进度条打印到STDERR。要取消此操作,请使用--no-status 选项。要另外禁止除关键日志消息之外的所有日志消息,请使用--quiet。日志消息的细粒度控制是 通过--log-level选项。在

为什么图形存在?在

用无序元素来区分树状结构是很困难的。假设您要比较两个JSON文件。 有limited tools available,它们有效地等价于 规范化JSON(例如,按键对字典元素排序)并执行标准的diff。这并不总是总是这样 足够了。对于exmaple,如果字典中的某个键发生了更改,但其值没有更改,则是传统的diff will的结论是整个key/value对被新的替换了,尽管惟一的变化是key 本身。有关详细信息,请参见our documentation。在

将Graphtage用作库

有关详细信息,请参见our documentation。在

延伸图

Graphtage设计为可扩展的;可以轻松定义新的文件类型,以及新的节点类型、编辑类型, 格式化程序和打印机。请参见our documentation 更多信息。在

完整的API文档可用here。在

许可证和确认书ts公司

这项研究是由国防部提供部分资金的Trail of Bits开发的 SafeDocs项目下的高级研究项目局(DARPA),作为Galois的分包商。 它是根据GNU Lesser General Public License v3.0授权的。 Contact us如果你在寻找条款的例外。 ©2020,比特追踪。在

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

推荐PyPI第三方库


热门话题
java反序列化多态JSON字符串   集合如何在Java中将唯一值从映射列表映射到新的映射列表?   java将JTable的单元格放在JTable的中间   Groovy方法中的java效率   java如何使用JNI或JNA阅读窗口标题?   java是否可以在listview单击时更改片段   java Gridview onclick images使用viewpager将imageview显示为画廊视图   java如何显示时间戳之间超过24小时的时间差   如何为下面的json结构声明java bean   未调用java onLocationResult   java在从组合框中选择时立即更新颜色变量   Java中的swing GetDriveType()等效项