Python練習【7】【文件對比並輸出可讀性較強的html文件】
阿新 • • 發佈:2019-01-17
spl error images 拷貝 tex https 打開 try odi
題目:
利用python寫出一個可在shell中執行的命令mydiff,用於比對兩個文件之間的區別,輸出可讀性較強的html頁面源碼,可保存到html文件中進行查看。
- 格式: mydiff file1 file2 [> save_file]
實現:
- 1.利用sys.argv函數獲取從命令行輸入的參數,用於傳遞參數
if len(sys.argv) !=3: # 如果參數數量不為3個輸出命令的使用提示 print(‘‘‘ usage: {} file1 file2 [>] [file to save] ‘‘‘.format(sys.argv[0])) else: # 當輸入參數符合要求進行比對 ... ...
- 2.利用difflib.Htmldiff函數進行比對,並輸出可讀性較強的html頁面源碼
#sys.argv的後兩個參數為需要進行比對的文件名 file1 = sys.argv[1] file2 = sys.argv[2] try: with open(file1)as f1 ,open(file2)as f2: # 打開兩個文件 content1= f1.read().splitlines(keepends=True) # 讀取其中的文件 content2= f2.read().splitlines(keepends=True) diff = difflib.HtmlDiff() # 創建工具對象 result =diff.make_file(content1,content2) # 獲取文件對比結果 print(result) # 輸出結果,可以看到html寫的源碼 except Exception as e: # 出現異常輸出提示 print(‘Error:‘+e)
- 3.文件開頭註明解釋器位置和編碼格式
#!/usr/local/python3/bin/python3.6 #encoding=utf-8
完整代碼:
#!/usr/local/python3/bin/python3.6 #encoding=utf-8 import sys import difflib if len(sys.argv) !=3: # 如果參數數量不為3個輸出命令的使用提示 print(‘‘‘ usage: {} file1 file2 [>] [file to save] ‘‘‘.format(sys.argv[0])) else: # 當輸入參數符合要求進行比對 file1 = sys.argv[1] file2 = sys.argv[2] try: with open(file1)as f1, open(file2)as f2: # 打開兩個文件 content1 = f1.read().splitlines(keepends=True) # 讀取其中的文件 content2 = f2.read().splitlines(keepends=True) diff = difflib.HtmlDiff() # 創建工具對象 result = diff.make_file(content1, content2) # 獲取文件對比結果 print(result) # 輸出結果,可以看到html寫的源碼 except Exception as e: # 出現異常輸出提示 print(‘Error:‘ + e)
- 4.將py文件拷貝至/usr/local/bin/中(此路徑已在環境變量中),並增加執行權限。此時利用tab鍵補齊可以看到mydiff命令
- 5.測試命令,輸出了一個html編碼
- 6.重定向在桌面生成一個html文件(mydiff /etc/passwd /tmp/paswd > /home/kiosk/Desktop/diff.html)
- 7.利用瀏覽器打開,可以看到可讀性很強的html頁面
Python練習【7】【文件對比並輸出可讀性較強的html文件】