Python文件對比
阿新 • • 發佈:2017-09-06
python difflib
環境:
python2.6.6
linux系統
對比文件差異用Python裏的difflib模塊:
Python自帶difflib模塊,無需安裝。
對比兩個文件是否一樣總體思路就是:將文件裏的內容讀出來然後再對比
符號 | 含義 |
+ | 包含在第二個序列中,但不包含第一個序列中 |
- | 包含在第一個序列中,但不包含第二個序列中 |
? | 標誌兩個序列行存在增量差異 |
^ | 標誌兩個序列存在的差異字符 |
‘‘ | 兩個序列行一致 |
示例一:
#!/usr/bin/python #coding:utf-8 #2017,8,27 import difflib text1=‘‘‘1234567890 this is a text one. heihiehie ‘‘‘ text1_line=text1.splitlines() #以行進行分割,以便以後對比 text2=‘‘‘235678956545 This is a Text two. heiheihei ‘‘‘ text2_line=text2.splitlines() d = difflib.Differ() #創建Differ()對象 diff = d .compare(text1_line,text2_line) print ‘\n‘.join(list(diff))
看下運行結果:
都是符號,符號不好分辨,接下來生成html文件。
示例二:
#!/usr/bin/python #coding:utf-8 #2017,8,27 import difflib text1=‘‘‘1234567890 this is a text one. heihiehie ‘‘‘ text1_line=text1.splitlines() #以行進行分割,以便以後對比 text2=‘‘‘235678956545 This is a Text two. heiheihei ‘‘‘ text2_line=text2.splitlines() d = difflib.HtmlDiff() #創建Differ()對象 print d.make_file(text1_line,text2_line)
執行命令生成diff.html文件
[[email protected] difflib]# python diff_simple2.py >> diff.html
用瀏覽器打開diff.html文件:
這樣是不是就好看多了。
綜合應用,對比兩個文件的差異:
#!/usr/bin/python #-*-coding:utf-8-*- #2017.9.5 import difflib import sys #接收參數 try: textfile1=sys.argv[1] textfile2=sys.argv[2] except Exception,e: print "error:"+str(e) print "usage:python Contrast_file.py filename1 filename2 >> diff.html" sys.exit() #讀取文件函數 def readfile(filename): try: fileHandle = open(filename, ‘rb‘) text = fileHandle.read().splitlines() fileHandle.close() return text except IOError as error: print "read file error:"+str(error) sys.exit() #判斷接收的是否為空 if (textfile1 == "" or textfile2==""): print "usage:python Contrast_file.py filename1 filename2 >> diff.html" sys.exit() #調用函數獲取分割後的字符串 text1_lines = readfile(textfile1) text2_lines = readfile(textfile2) #創建html類對象,並且進行比較。 diff = difflib.HtmlDiff() print diff.make_file(text1_lines,text2_lines)
執行命令生成diff2.html文件,用瀏覽器打開和示例二一樣。
[[email protected] difflib]# python Contrast_file.py httpd.conf httpd.conf.bak >> diff2.html
參考資料:網絡和Python自動化運維技術與最佳實踐
總結:思路很重要,這次文件對比的思路就是先把文件讀出來,在進行對比。每天進步一點點。
本文出自 “天道酬勤” 博客,謝絕轉載!
Python文件對比