一个简单的单向差分工具

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第三方库


热门话题
socketJava加密聊天客户端未通过关联   java保存JFileChooser的状态   java如何让代码等待GUI完成?   java可序列化和接口:Parcelable在写入可序列化对象时遇到IOException   java Jersey客户端将覆盖ROBOTS响应   java空指针异常&如何克服   java如何使用JAXR设置字符集?   JavaSpring自定义转换器被覆盖   java将泛型类型的值设置为DTO字段   使用netty的java音频流服务器   java滚动条添加到面板时不显示在滚动窗格中   java windows通过IIS Url重写单点登录tomcat   Web应用程序的java容器管理安全性   java使用mybatis将POJO项数组传递到存储过程?