python比对文件差异|python 如何实现两个目录下不同的文件

|

❶ python读取两个文件并且判断是否一致

'''判断两个文件是否相同,如果不同请指出第几行不相同'''def f1vsf2(name1,name2):f1 = open(name1)f2 = open(name2)count = 1msg=[] for line1 in f1:line2 = f2.readline() if(line1!=line2):msg.append("第%d行不一样"%count)count+=1f1.close()f2.close() return msgisbool = Truewhile isbool:fname1 = input("请输入要比较的文件1路径及文件名:") if fname1 =='': print("文件名不能请重新输入") break;fname2 = input("请输入要比较的文件2路径及文件名:") if fname2 =='': print("文件名不能请重新输入") break;result = f1vsf2(fname1,fname2) if len(result)==0: print("两个文件完全一致") else: print("两个文件共有【%d】行不同"%len(result)) for msg in result: print(msg)isbool = False

❷ Python比较两个文件是否相同,倒数第二行不太明白

答: 确实是有道理的,在文件当中的第7行,实现的功能就是从第1个文件中取一个字符,而第8行是在第2个文件中取一行字符,那么一个字符和一行字符比较肯定是不相等的呢,所以我觉得第7行那个for循环改一下,改成每次取一行,然后一行和一行比较当比较,结果不同时记录下它的行号,得到最后的结果。

希望可以帮助到你!

❸ python 有没有一个模块可以比较两个文本文件内容差异的而且可以只输出差异的部分

difflib是python提供的比较序列(string list)差异的模块。实现了三个类:1>SequenceMatcher 任意类型序列的比较 (可以比较字符串)2>Differ 对字符串进行比较3>HtmlDiff 将比较结果输出为html格式.

建议你使用SequenceMatcher比较器,给你个例子吧。

SequenceMatcher实例:

import difflibfrom pprint import pprinta = &#39pythonclub.org is wonderful&#39b = &#39Pythonclub.org also wonderful&#39s = difflib.SequenceMatcher(None, a, b)print “s.get_matching_blocks():”pprint(s.get_matching_blocks())printprint “s.get_opcodes():”for tag, i1, i2, j1, j2 in s.get_opcodes():print (“%7s a[%d:%d] (%s) b[%d:%d] (%s)” % (tag, i1, i2, a[i1:i2], j1, j2, b[j1:j2]))输出为:s.get_matching_blocks():[(1, 1, 14), (16, 17, 1), (17, 19, 10), (27, 29, 0)]s.get_opcodes():replace a[0:1] (p) b[0:1] (P)equal a[1:15] (ythonclub.org ) b[1:15] (ythonclub.org )replace a[15:16] (i) b[15:17] (al)equal a[16:17] (s) b[17:18] (s)insert a[17:17] () b[18:19] (o)equal a[17:27] ( wonderful) b[19:29] ( wonderful)

SequeceMatcher(None,a,b)创建序列比较对象,将以a作为参考标准进行Sequecematcher(None,b,a)创建序列比较对象,将以b作为参考标准进行a,b表示待比较的两个序列,生成序列比较对象后,调用该对象的get_opcodes()方法,将返回一个元组(tag,i1,i2,j1,j2).tag表示序列分片的比较结果.i1,i2表示序列a的索引,j1,j2表示序列b的索引.get_opcodes()返回元组(tag,i1,i2,j1,j2)的含义

❹ 使用Python实现比较俩个文件的数据,不同的存在另一个文件里

这是我之前在excel中比较两组不同数据的代码,修改一下完全可以满足你的要求。

#-*-coding:utf-8-*-importxlrdimportxlwtfromxlutils.importimportos,timeimportoperatorpath=r"E:xx"#path=raw_input('InputPath:')os.chdir(path)print"CurrentWorkspace:%s"%os.getcwd()#读取excel工作表中数据为字典#字典形式为:{代码:地名}defreadDictStandard():#name_check=raw_input('CheckExcelName:')filename=(name_check).decode('cp936')data=xlrd.open_workbook(filename+'.xls',formatting_info=True)table=data.sheet_by_index(0)#table=data.sheet_by_name(u'di')printtable.namecellList_k=[]cellList_v=[]ncols=table.ncolsforcolinrange(0,ncols):ifnot(col%2):collist_k=table.col_values(col)collist_v=table.col_values(col+1)forcell_kincollist_k:cellList_k.append(cell_k)forcell_vincollist_v:cellList_v.append(cell_v)check=dict(zip(cellList_k,cellList_v))num=0forkeyincheck:num+=1#printstr(key),check[key]print'%nitsincheckExcel'%numprint'-'*50returncheckdefreadDictCheck():#name_check=raw_input('CheckExcelName:')filename=(name_check).decode('cp936')data=xlrd.open_workbook(filename+'.xls',formatting_info=True)table=data.sheet_by_index(0)#table=data.sheet_by_name(u'sheet1')printtable.namecellList_k=[]cellList_v=[]ncols=table.ncolscollist_k=table.col_values(0)collist_v=table.col_values(1)forcell_kincollist_k:cellList_k.append(cell_k)forcell_vincollist_v:cellList_v.append(cell_v)check=dict(zip(cellList_k,cellList_v))num=0forkeyincheck:num+=1#printstr(key),check[key]print'%nitsincheckExcel'%numprint'-'*50returncheckdefcheckDict(check,standard):num=0forkinsorted(check.keys()):ifknotinstandard.keys():num+=1printk,check[k]elifcheck[k]!=standard[k]:printk,check[k],standard[k]num+=1print'%dnumbersrecords'%numdefmain():globalname_checkname_check=raw_input('CheckExcelName:')check=readDictCheck()name_check=raw_input('StandardExcelName:')standard=readDictStandard()time.sleep(1)checkDict(check,standard)if__name__=="__main__":main()print'-'*50

❺ python 如何实现两个目录下不同的文件,并输出不同文件的路径,将其写入txt中

importosdefos_walker(folder):"""遍历foler里面的文件"""path=os.path.abspath(folder)forroot,dirs,filesinos.walk(path):ifdirs:continue#printroot,dirs,filesforfinfiles:yieldf,os.path.abspath(os.path.join(root,f))defcompare(f1,f2):""""对比出两个文件夹里面的文件""""f1_list={f:pforf,pinos_walker(f1)}f2_list={f:pforf,pinos_walker(f2)}common={_:f1_list[_]for_inf1_listif_inf2_list}print"common:",commonf1_specific={_:f1_list[_]for_inf1_listif_notinf2_list}print"f1_specific",f1_specificf2_specific={_:f2_list[_]for_inf2_listif_notinf1_list}print"f2_specific",f2_specificcompare("FOLDER1","FOLDER2")

这个代码有很多局限,比如没考虑子目录等,核心思想是用os.walk. 希望有帮助

❻ python中怎么快速比较2个文件中的内容

可以用 difflib库,下面给一个例子,具体需求自己研究

假如在同一个目录下有a.txt, b.txt 两个文本文件

a.txt 内容是

aaa

bbb

b.txt内容是

aaa

ccc

importdiffliba=open('a.txt','U').readlines()b=open('b.txt','U').readlines()diff=difflib.ndiff(a,b)sys.stdout.writelines(diff)

结果是:

aaa

– bbb+ ccc

❼ 用python依次比较2个文件夹内的JSON文件的差异

没有什么不一样的


赞 (0)