设为首页 收藏本站
查看: 1803|回复: 5

[经验分享] python写的diff脚本

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-11-8 09:04:48 | 显示全部楼层 |阅读模式
因为项目版本之间的diff比较常用到,一般都查看改动过的脚本的diff,尤其是看其他人写的代码的时候。有些情况是一个目录中有很多文件,到最后也不知道都改了哪里了,于是需要逐个diff。
于是就诞生了这个脚本,这也是很久之前刚开始写python的时候写的比较简陋的.

因为linux执行ll命令,不同的机器可能显示不太相同,可做相应调整,下面脚本适应的情况是:
total 12
drwxr-sr-x  3 work work 4096 Nov 22 16:43 bin
drwxr-sr-x  2 work work 4096 Nov  8 10:30 conf
-rw-rw-r--  1 work work   64 Nov 22 15:27 test.pl

两个脚本构成,主要是思路是检测新代码目录中与旧目录中脚本的diff,如果新目录中有新出现的脚本也会发现。
运行脚本为go_diff.py,调用脚本为diff_work.py

go_diff.py


import os
import sys
if __name__ == '__main__':
    if len(sys.argv) == 4:
        print "yes,running"
        print "==============================================================="
        file1 = sys.argv[1]
        file2 = sys.argv[2]
        file3 = sys.argv[3]
        cmd = 'ls -l '+file1+' >temp_file1'
        os.system(cmd)
        cmd = 'ls -l '+file2+' >temp_file2'
        os.system(cmd)
        cmd = 'rm -rf '+file3+';mkdir '+file3
        os.system(cmd)
        cmd = 'cat temp_file1 temp_file2|python diff_.py '+file1+' '+file2+' '+file3
        os.system(cmd)

        cmd = 'rm temp_file1 temp_file2'
        os.system(cmd)
        print "==============================================================="
       # find_content(ff,int(sys.argv[1]))
    else:
        print "parameter num error ******"
        print "parameter1:content1"
        print "parameter2:content2"
        print "parameter3:dest_content"


diff_work.py


import sys
import os
def find_content(ff,file1,file2,file3):
    m = {}
    flag = 0
    while True:
         ll = ff.readline().strip()
         if(ll):
             tokens = ll.split(' ')
             if(len(tokens) > 4 and tokens[0].find('drw')!=0):
                 m[tokens[-1]] = 0
             if(len(tokens) < 3 and flag!=0):
                 break
             flag = 1
         else:
             break
    n = {}
    while True:
         ll = ff.readline().strip()
         if(ll):
             tokens = ll.split(' ')
             if(len(tokens) > 4 and tokens[0].find('drw')!=0):
                 n[tokens[-1]] = 0
         else:
             break
    for x in m.keys():
         if(n.has_key(x)):
              print x
              cmd = "diff %s/%s %s/%s > %s/%s" %(file1,x,file2,x,file3,x)
              os.system(cmd)
         else:
              print x
              cmd = 'cat %s/%s > %s/%s' %(file1,x,file3,x)
              os.system(cmd)
if __name__ == '__main__':
    ff = sys.stdin
    if len(sys.argv) == 4:
           find_content(ff,sys.argv[1],sys.argv[2],sys.argv[3])
    else:
           print "error"



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-10359-1-1.html 上篇帖子: 使用Python自动化备份系统及网站 下篇帖子: python使用元组、字典向函数传递多个参数、python冗余参数处理 python

尚未签到

发表于 2013-11-28 00:44:37 | 显示全部楼层
小时候老师教我们好人有好报,现在长大了好人却常被嘲笑

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-6 18:34:00 | 显示全部楼层
终于解决我的问题了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-16 08:05:12 | 显示全部楼层
-"〖八月】滥情的人,该怎么看重内些承诺.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-22 21:34:04 | 显示全部楼层
离开了就不要回头,要知道这样也会再次的被刺伤

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-29 09:57:22 | 显示全部楼层
走了吧。 别再多停留一秒。(爱 软弱我的任性姿态 )

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表