• 欢迎访问挑战自我博客网站,安全研究,web渗透,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入挑战自我博客网站 网站主页

python简单实现两个文本比较

python 挑战自我 450次浏览 已收录 0个评论

1、文章背景

近期做了一些渗透测试工作,渗透工具经常挂死,文件结果可能只保存了一半,重新开启工具的时候希望接着上次的过程继续做下去,这就涉及到了两个文本的比较,最好是能够比较两个新旧文件的差异,把差异输出,新的渗透测试工作就从这个差异化文件中开始即可。

可能说的不是很清楚,其实简单说就是,有两个文本文件,一个是A.TXT,一个是B.TXT,希望把这两个文本文件比较之后,把差异化的内容输出到第三个文件中

2、简单python代码实现

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import sys
import optparse
import signal
import profile

def compare(firstfile,secondfile):
    template_list = []
    with open(secondfile,'rb') as file_template:
        for line in file_template.readlines():
            template_list.append(line)
    
    new_list = []
    with open(firstfile,'rb') as file_first:
        for line in file_first.readlines():
            if line not in template_list:
                new_list.append(line)

    return new_list

def usage():
    print "Example:"
    print "  python "+sys.argv[0]+" -f file1.txt -s file2.txt"

if __name__ == '__main__':
    parser = optparse.OptionParser("Usage: %prog [options] ")
    parser.add_option("-f", "--firstfile", dest = "firstfile",help = "the first file")
    parser.add_option("-s", "--secondfile", dest = "secondfile",help = "the second file")
    (options, args) = parser.parse_args()

    if options.firstfile == None or options.secondfile == None:
        parser.print_help()
        usage()
        sys.exit(0)
    else:
        file_new = open('new.txt','wb')
        new_list_1 = compare(firstfile=options.firstfile,secondfile=options.secondfile)
        new_list_2 = compare(firstfile=options.secondfile,secondfile=options.firstfile)
        new_list_all = new_list_1 + new_list_2
        for line in new_list_all:
            file_new.write(line)

        file_new.close()

3、代码简要分析

其实实现原理很简单,主要是近期不断地在重复开发这些简单的代码,很无聊,也很没有效率,所以这边就写了一个通用化的代码,以后直接加参数调用即可,这个代码我再简要说明下,代码运行就两个参数,分别为两个文本文件的文件名即可,这边我主要通过两次文本比较来实现两个文件的差异化输出,一次是以第一个文件为模板,第二个文件去和他比较,输出第一项差异,接着颠倒比较对象,输出第二项差异,最后把两个差异相加输出到本地文件即可。

期间我还想着做了一个去重函数,主要是针对这两个差异相加后的去重,后面从数学逻辑角度一分析,这两项差异永远不可能会有重复的内容,所以我就把去重这个函数删掉了。

4、其他待完成的工作

有时候,我们需要的环境不仅仅是对两个文本文件的比较,而是一些有着固定编码的文件,形式各异,编码都有可能不同,这时候就需要我们先对文本文件进行转码处理,然后再调用上述相关步骤,才能实现,不知道大家有没有碰到过这个问题,后面有时间再补上转码这一块的代码吧,今天就先这样了!


挑战自我博客, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明python简单实现两个文本比较
喜欢 (7)
支付宝[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址