吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1028|回复: 7
收起左侧

[求助] 关于使用python比较两个文件内容异同的问题,谢谢!

[复制链接]
lengkeyu 发表于 2022-10-26 16:50
使用python比较两个文件内容异同的问题

在网上找到了类似的代码
[Python] 纯文本查看 复制代码
import os
 
class cmpFile:
 
    def __init__(self, file1, file2):
        self.file1 = file1
        self.file2 = file2
 
    def fileExists(self):
        if os.path.exists(self.file1) and \
                os.path.exists(self.file2):
            
            return True
        else:
            return False
 
    # 对比文件不同之处, 并返回结果
    def compare(self):
        if cmpFile(self.file1, self.file2).fileExists() == False:
            
            return []
        
        fp1 = open(self.file1.encode('gbk','ignore').decode('gbk'))
         fp2 = open(self.file2.encode('gbk','ignore').decode('gbk'))
        flist1 = [i for i in fp1]
        flist2 = [x for x in fp2]
        fp1.close()
        fp2.close()
        flines1 = len(flist1)
        
        flines2 = len(flist2)
        
        
        if flines1 < flines2:
        
            flist1[flines1:flines2+1] = ' ' * (flines2 - flines1)
            
        if flines2 < flines1:
           
            flist2[flines2:flines1+1] = ' ' * (flines1 - flines2)
            
 
        counter = 1
        cmpreses = []
        for x in zip(flist1, flist2):
            if x[0] == x[1]:
                counter +=1
                continue
            if x[0] != x[1]:
                cmpres = '%s和%s第%s行不同, 内容为: %s --> %s' % \
                         (self.file1, self.file2, counter, x[0].strip(), x[1].strip())
                cmpreses.append(cmpres)
                counter +=1
        return cmpreses
 
if __name__ == '__main__':
    print('当前路径:',os.getcwd())
    cmpfile = cmpFile('file1.txt', 'file2.txt')
    difflines = cmpfile.compare()
    print('开始比较...')
    for i in difflines:

        print(i, end='\n')



但是只能比较txt文件,如果换成word或其他文件,编码就错误了,请问大家:
1.如何解决比较word或excel的问题?
2.有无其他功能更强大或可视化的比较两个文件内容差异的代码?
谢谢!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Exroia 发表于 2022-10-26 17:03
word和excel实际上是压缩文件,你可以拿压缩工具打开试试,word的文本数据在word->document.xml,excel的文本数据在xl->sharedString.xml,单元格数据在xl->worksheets->sheets1.xml(仔细看一下单元格与文本的对应关系)
bluerabbit 发表于 2022-10-26 17:09
word excel 的话,应该引入其它一些支持库吧,像 openpyxl, python-docx 之类的
Courser 发表于 2022-10-26 17:45
jxji 发表于 2022-10-26 20:53
按照 binary 读进来啊,open 的时候用 rb
YuanFang0w0 发表于 2022-10-26 21:05
如果只是对比有没有区别的话,直接进行md5计算对比就行了。要是需要知道具体哪一行不同,应该需要openxl之类的库读取文档里面的内容进行比对!
 楼主| lengkeyu 发表于 2022-10-27 09:29
YuanFang0w0 发表于 2022-10-26 21:05
如果只是对比有没有区别的话,直接进行md5计算对比就行了。要是需要知道具体哪一行不同,应该需要openxl之 ...

上面那个语句,就是逐行比较文件的内容差异,如果有差异,将差异的内容显示出来。如果使用‘rb’方式读取的话,显示出来的都是字节流,没法看。
YuanFang0w0 发表于 2022-10-27 09:57
lengkeyu 发表于 2022-10-27 09:29
上面那个语句,就是逐行比较文件的内容差异,如果有差异,将差异的内容显示出来。如果使用‘rb’方式读取 ...

那你就用可以操作word的库来读取文件,对比就行了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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