Python论坛  - 讨论区

标题:[python-chinese] 比较好的文本diff和patch解决方案

2007年12月25日 星期二 10:14

RO rosettas在gmail.com
星期二 十二月 25 10:14:59 HKT 2007

hi all

前段时间在此问过有没有比较好的diff和patch解决方案.当时几位热心同学给的方案大致以下两种:
1. 使用difflib
2. 使用unix系的diff和patch应用程序(有windows版本).

经实验, difflib 的ndiff和restore可以提供diff结果和还原的操作, 但diff结果将包含两段比较文本全部内容,
不是我希望的只包含差异结果.

difflib 的unified_diff可以比较出完善的统一diff格式的结果, 仅有差异部分, 符合我的要求.
但difflib中没有提供一个函数可以还原这种比较结果.

因此我试图找到可以还原统一diff格式结果的方案, 其中尝试采用unix系的patch应用程序,
可以成功但局限性比较大(当然也可能是我方法有问题). 我使用patch的时候是采用文件系统过渡的方式,
起单独进程对临时文件做patch后再获取patch结果. 这种操作方式当我把turbogears做成windows服务时就失败了.

因此继续查找是否有用python代码实现的patch, 后来一位叫Michael Head的同学告知我有个conary's patch library,
地址http://cvs.rpath.com/conary-docs/conary.lib.patch-module.html
完全满足要求, 于是将起check出来, 在import等一些小地方做了一些改动.使之全部使用标准库. 放到我的工程中运行良好.

我使用的patch代码地址: http://cudoc.googlecode.com/svn/trunk/OnlineAPIDoc/onlineapidoc/patch.py

-- 
with kind regards

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年12月25日 星期二 10:21

shhgs shhgs.efhilt在gmail.com
星期二 十二月 25 10:21:17 HKT 2007

diff有参数可以生成ed命令。



On Dec 24, 2007 9:14 PM, RO <rosettas在gmail.com> wrote:
> hi all
>
> 前段时间在此问过有没有比较好的diff和patch解决方案.当时几位热心同学给的方案大致以下两种:
> 1. 使用difflib
> 2. 使用unix系的diff和patch应用程序(有windows版本).
>
> 经实验, difflib 的ndiff和restore可以提供diff结果和还原的操作, 但diff结果将包含两段比较文本全部内容,
> 不是我希望的只包含差异结果.
>
> difflib 的unified_diff可以比较出完善的统一diff格式的结果, 仅有差异部分, 符合我的要求.
> 但difflib中没有提供一个函数可以还原这种比较结果.
>
> 因此我试图找到可以还原统一diff格式结果的方案, 其中尝试采用unix系的patch应用程序,
> 可以成功但局限性比较大(当然也可能是我方法有问题). 我使用patch的时候是采用文件系统过渡的方式,
> 起单独进程对临时文件做patch后再获取patch结果. 这种操作方式当我把turbogears做成windows服务时就失败了.
>
> 因此继续查找是否有用python代码实现的patch, 后来一位叫Michael Head的同学告知我有个conary's patch library,
> 地址http://cvs.rpath.com/conary-docs/conary.lib.patch-module.html
> 完全满足要求, 于是将起check出来, 在import等一些小地方做了一些改动.使之全部使用标准库. 放到我的工程中运行良好.
>
> 我使用的patch代码地址: http://cudoc.googlecode.com/svn/trunk/OnlineAPIDoc/onlineapidoc/patch.py
>
> --
> with kind regards
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年12月25日 星期二 10:27

RO rosettas在gmail.com
星期二 十二月 25 10:27:28 HKT 2007

On 12/25/07, shhgs <shhgs.efhilt在gmail.com> wrote:
> diff有参数可以生成ed命令。

用diff应用程序? 我觉得这个方案不好

-- 
with kind regards

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年12月25日 星期二 10:37

Wayne moonbingbing在gmail.com
星期二 十二月 25 10:37:47 HKT 2007

感觉freebsd下面的bsdiff是最强大的(是二进制比较,咔咔),有对应的py程序(把c语言程序包装成dll调用也不错),很好用:)
曾经在此基础上面写过两个文件夹的二进制比较,生成比较的结果列表。再通过对应的patch还原

2007/12/25, RO <rosettas at gmail.com>:
>
> On 12/25/07, shhgs <shhgs.efhilt at gmail.com> wrote:
> > diff有参数可以生成ed命令。
>
> 用diff应用程序? 我觉得这个方案不好
>
> --
> with kind regards
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




-- 
wayne
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20071225/4571cd0c/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号