一个简单的单向差分工具

ShortDiff的Python项目详细描述


shortdiff

这是diff算法的python实现。 它的目的是生产尽可能短的单向贴片 从一个文件转到另一个文件。 这有助于在没有 保存每个状态的副本(这是版本控制的简单部分)。 这产生的补丁比gnu diff工具的任何输出都要短。 因为它是单向的,所以从A到B的补丁不允许 从B到A。

免责声明

该算法具有O(n*m)的时间复杂度(n和m为n)。 每个文件的行数),并用纯python实现。 那里的表演不怎么样。 你可能不应该在任何严肃的项目中使用它。 我写这本书是为了教育目的,我用它写了一个非常小的 规模项目。

对于教育项目,档案中还有更天真的版本 目录。最后一个模块是重新安装这些设备。

安装

使用pip安装它或将此目录复制到相关位置 如果你知道你在做什么。

pip install ShortDiff

用法

cli

创建修补程序

python -m ShortDiff diff FILA_A [FILE_B]

创建从a到b的修补程序。如果提交了文件,则其内容 是标准输入的预期值。 将修补程序输出到标准输出。

应用修补程序

python -m ShortDiff patch PATCH [FILE]

对文件应用修补程序。如果文件是ommited,请对标准输入应用修补程序。 结果打印到标准输出。

API

功能可以从模块导入,以便在其他应用程序中使用。 有用的功能包括:

  • differ(old, new):(低级)取任意序列并返回levenstein距离和 以成对的顺序从一个到另一个的路径(旧的位置,新的位置)。 如果在两个连续对中,old中的位置相同,则它对应于插入。 如果new中的位置在两个连续对中相同,则对应于删除。 否则它对应于未修改的块。 路径的设置使连续操作不能是同一类型(删除不能是 立即删除)。

  • get_chunks(old_txt, new_txt):(高级)生成程序,获取两个字符串并计算活动差异。 它产生4个元素元组(kind, start, stop, content)kind'd'(删除)'i'(插入)之一 和'k'(保持/未修改)。startstop是由 在old_txt中执行删除和保留操作,在new_txt中执行插入操作。content是 那块。

  • create_patch(old_txt, new_txt):(高级别)返回由cli打印的修补程序

  • apply_patch(old_txt, patch):(高级)返回将patch应用到old_txt的结果

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

推荐PyPI第三方库


热门话题
带有嵌套类和泛型参数的Java重写方法   将JSP变量传递给java类方法   java多ifs语句工作流(无ELSE)   用spring mvc上传java jquery文件:400错误请求   插装如何知道被插装java的类的jar名称   使用java的Openssl asn1parse   java Hibernate连接到错误的数据库   json无法通过Springbeans从REST请求Java NetBeans获得响应   java无法加载自定义应用程序的子集。Quarkus中映射的yml配置   成功登录时,java CAS重定向到URL   Selenium WebDriver Java文件上传在点击添加文件按钮将文件上传到应用程序后失败   电子邮件如何在Sun Java System Messaging Server 6.3中将用户排除在“人”组之外?   java如何将工作日和时间对象解析为从今天开始的下一个逻辑日期?   flyingsaucer生成的pdf中servlet的java渲染图像   java欢迎文件列表JSP   java无法在spring security with spring boot中阻止同一用户的多个并发登录   递归Dijkstra递归java。StackOverflowerr先生   java gmail对不使用javamail的回复