❶ python讀取兩個文件並且判斷是否一致
'''判斷兩個文件是否相同,如果不同請指出第幾行不相同'''def f1vsf2(name1,name2):
f1 = open(name1)
f2 = open(name2)
count = 1
msg=[] for line1 in f1:
line2 = f2.readline() if(line1!=line2):
msg.append("第%d行不一樣"%count)
count+=1
f1.close()
f2.close() return msg
isbool = 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 difflib
from pprint import pprint
a = 'pythonclub.org is wonderful'
b = 'Pythonclub.org also wonderful'
s = difflib.SequenceMatcher(None, a, b)
print "s.get_matching_blocks():"
pprint(s.get_matching_blocks())
print "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-*-
importxlrd
importxlwt
fromxlutils.import
importos,time
importoperator
path=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.name
cellList_k=[]
cellList_v=[]
ncols=table.ncols
forcolinrange(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=0
forkeyincheck:
num+=1
#printstr(key),check[key]
print'%nitsincheckExcel'%num
print'-'*50
returncheck
defreadDictCheck():
#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.name
cellList_k=[]
cellList_v=[]
ncols=table.ncols
collist_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=0
forkeyincheck:
num+=1
#printstr(key),check[key]
print'%nitsincheckExcel'%num
print'-'*50
returncheck
defcheckDict(check,standard):
num=0
forkinsorted(check.keys()):
ifknotinstandard.keys():
num+=1
printk,check[k]
elifcheck[k]!=standard[k]:
printk,check[k],standard[k]
num+=1
print'%dnumbersrecords'%num
defmain():
globalname_check
name_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中
importos
defos_walker(folder):
"""遍歷foler裡面的文件"""
path=os.path.abspath(folder)
forroot,dirs,filesinos.walk(path):
ifdirs:
continue
#printroot,dirs,files
forfinfiles:
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:",common
f1_specific={_:f1_list[_]for_inf1_listif_notinf2_list}
print"f1_specific",f1_specific
f2_specific={_:f2_list[_]for_inf2_listif_notinf1_list}
print"f2_specific",f2_specific
compare("FOLDER1","FOLDER2")
這個代碼有很多局限,比如沒考慮子目錄等,核心思想是用os.walk. 希望有幫助
❻ python中怎麼快速比較2個文件中的內容
可以用 difflib庫,下面給一個例子,具體需求自己研究
假如在同一個目錄下有a.txt, b.txt 兩個文本文件
a.txt 內容是
aaa
bbb
b.txt內容是
aaa
ccc
importdifflib
a=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文件的差異
沒有什麼不一樣的