‘‘‘cmpfile.py - 比对两个文件, 如果有不同之处, 打印内容和行号‘‘‘

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():

fp1 = open(self.file1)

fp2 = open(self.file2)

flist1 = [i for i in fp1]

flist2 = [x for x in fp2]

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__‘:

cmpfile = cmpFile(‘a1.txt‘, ‘a2.txt‘)

difflines = cmpfile.compare()

for i in difflines:

print(i, end=‘\n‘)

执行结果

a1.txt和a2.txt第4行不同, 内容为: --> 4444444444444444444

a1.txt和a2.txt第5行不同, 内容为: sfsdfasdf --> 5555555555555555555

a1.txt和a2.txt第7行不同, 内容为: fasdfasdf --> sfsdfasdf

a1.txt和a2.txt第8行不同, 内容为: 1111111111111111111 -->

a1.txt和a2.txt第9行不同, 内容为: 2222222222222222222 --> fasdfasdf

a1.txt和a2.txt第10行不同, 内容为: 3333333333333333333 -->

a1.txt和a2.txt第11行不同, 内容为: 4444444444444444444 -->

a1.txt和a2.txt第12行不同, 内容为: 5555555555555555555 -->

a1.txt和a2.txt第13行不同, 内容为: -->

a1.txt和a2.txt第14行不同, 内容为: sfsdfasdf -->

a1.txt和a2.txt第15行不同, 内容为: -->

a1.txt和a2.txt第16行不同, 内容为: fasdfasdf -->

a1.txt和a2.txt第17行不同, 内容为: 1111111111111111111 -->

a1.txt和a2.txt第18行不同, 内容为: 2222222222222222222 -->

a1.txt和a2.txt第19行不同, 内容为: 3333333333333333333 -->

a1.txt和a2.txt第20行不同, 内容为: 4444444444444444444 -->

a1.txt和a2.txt第21行不同, 内容为: 5555555555555555555 -->

a1.txt和a2.txt第22行不同, 内容为: -->

a1.txt和a2.txt第23行不同, 内容为: sfsdfasdf -->

a1.txt和a2.txt第24行不同, 内容为: -->

a1.txt和a2.txt第25行不同, 内容为: fasdfasdf -->

a1.txt和a2.txt第26行不同, 内容为: 1111111111111111111 -->

a1.txt和a2.txt第27行不同, 内容为: 2222222222222222222 -->

a1.txt和a2.txt第28行不同, 内容为: 3333333333333333333 -->

a1.txt和a2.txt第29行不同, 内容为: 4444444444444444444 -->

a1.txt和a2.txt第30行不同, 内容为: 5555555555555555555 -->

a1.txt和a2.txt第31行不同, 内容为: -->

a1.txt和a2.txt第32行不同, 内容为: sfsdfasdf -->

a1.txt和a2.txt第33行不同, 内容为: -->

a1.txt和a2.txt第34行不同, 内容为: fasdfasdf -->

python返回文件行号_用python比较两个文件中内容的不同之处, 并输出行号和内容....相关推荐

  1. 无忧考吧python编译路径不存在_关于python编译路径的问题

    在python安装目录下的Scripts下,有两个文件,compile.py和usemodule.py,其中compile.py代码如下:importpy_compilepy_compile.comp ...

  2. file对象怎样获取文件的长度?_使用FSO对象获取整个文件夹的信息

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十八个专题"FSO对象对文件及文件夹的处理"的第三节"使用FSO对象获取整个文件夹的信息" ...

  3. python统计行号_用Python实现两个文件的不同行的编号

    title: 文件不同行 tags: python,IO,dict 比较两个文件在哪些行内容不同,返回这些行的编号,行号编号从1开始. 定义统计文件行数的函数 # 统计文件个数def statLine ...

  4. python统计行号_利用Python进行数据分析(第三篇上)

    上一篇文章我记录了自己在入门 Python 学习的一些基础内容以及实际操作代码时所碰到的一些问题. 这篇我将会记录我在学习和运用 Python 进行数据分析的过程: 介绍 Numpy 和 Pandas ...

  5. python查找指定字符所在行号_在python中获取当前位置所在的行号和函数名

    对于python,这几天一直有两个问题在困扰我: 1.python中没办法直接取得当前的行号和函数名.这是有人在论坛里提出的问题,底下一群人只是在猜测python为什么不像__file__一样提供__ ...

  6. pythonidle怎样显示行号_给Python IDLE添加行号显示

    文章目录 一.引出问题 1.Spyder编辑Python程序能显示行号 2.Python IDLE编辑Python程序不显示行号 二.解决问题 1.下载IDLEX压缩包 2.将idlex-1.18.r ...

  7. python获取行号_在python中获取当前位置所在的行号和函数名

    python中没办法直接取得当前的行号和函数名.这是有人在论坛里提出的问题,底下一群人只是在猜测python为什么不像__file__一样提供__line__和__func__,但是却最终也没有找到解 ...

  8. python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...

    其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...

  9. python下载文件并改名_用 Python 给下载的 B 站视频文件批量改名

    有好几位网友私下里问我如何学习平面设计?我告诉他们:如果只想自学的话,可以先到"哔哩哔哩"网站(俗称 B 站)找视频教程看看.要是觉得哪个教程不错,还可以下载到电脑或手机上随时随地 ...

最新文章

  1. Module ‘celery‘ has no attribute ‘celery‘问题
  2. 面对不同用户,数据中心如何将服务做到极致
  3. Android stadio 自定义debug release keystore
  4. wxWidgets:窗口 ID
  5. STM32F103ZE单片机在WWDG窗口看门狗的EWI中断中喂狗导致系统复位的原因及解决办法(中断函数重入问题)
  6. Matplotlib - 散点图 scatter() 所有用法详解
  7. 分享WordPress博客搜索引擎优化的六点经验 博客园 cnbogs
  8. 关于文件整理的一些心得
  9. 19.内在摄像机校准——介绍,理想与真实固有参数之比,改善内在参数_1
  10. 持有对象---Arrays.asList()和Collections.addAll()的性能比较
  11. git stash暂存命令
  12. atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结
  13. PyTorch1.2安装(Anaconda3 + Python3.6 + cpu版本)
  14. 【MATLAB统计分析与应用100例】案例015:matlab读取Excel数据,进行值聚类分析
  15. 新手必看:PS软件入门基础知识
  16. 基于WDF驱动模型使用WFP框架进行网络层数据修改
  17. 中国移动--九天毕昇平台使用测试(薅Telsa V100)
  18. 苏州市软件行业协会第五届第四次理事会暨元宇宙专委会成立决议会在苏召开
  19. ROUGE: A Package for Automatic Evaluation of Summaries
  20. 遥感专业学习神经网络与深度学习过程中的想法

热门文章

  1. 三星a7支持html吗,三星A7怎么样 三星A7特点介绍
  2. java实现doc向swf格式的转换 转_java实现doc向swf格式的转换 转
  3. Eureka出现Root name ‘timestamp‘ does not match expected (‘instance‘) for type xxx的错误,如何解决?
  4. linux的基本命令--常用
  5. 牛客题霸 NC16 判断二叉树是否对称
  6. Navicat——MySQL之delimiter默认设置问题
  7. Make It Connected
  8. ajax请求返回json实例,Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
  9. spring自定义作用域 依赖注入之手动注入
  10. 日志 查看匹配内容的前后几行