日常工作中,有可能需要對比兩個檔案的資料差異,在大量資料的情況下,常用的辦法是使用資料庫對比,現推薦乙個使用python指令碼對比資料的方法,實際測試,檔案一有60萬行資料,檔案2有50萬行資料,對比差異耗時1.5s,大大節省了對比資料的耗時,在資料庫裡加索引的情況下,也需要7s左右出結果,所以python是無比神奇的。
**:import argparse
import sys
import time
import datetime
##################wirten by diorlitao####################################
# 使用方法
#需要安裝python3.6及以上版本
#1、將指令碼和要對比的文字檔案放到同乙個目錄下
#2、將兩個需要對比的文字轉為utf-8格式
#3、在cmd命令列模式下執行:python diff_file.py -f1 1.txt -f2 2.txt
###################1.txt 和 2.txt是要對比的文字檔案#######################
def readfile(filename):
try:
with open(filename, 'r',encoding='utf-8') as filehandle:
text = filehandle.read().splitlines()
#print(text)
return text
except ioerror as e:
print("read file error:", e)
sys.exit()
def diff_file(filename1, filename2):
text1_lines = readfile(filename1)
text2_lines = readfile(filename2)
with open('result1.txt', 'w', encoding='utf-8') as resultfile:
resultfile.write('--------------檔案1與檔案2的差異-------------------'+'\n')
diff_set = set(text1_lines).difference(set(text2_lines))
for i in diff_set:
resultfile.write(str(i)+'\n')
with open('result2.txt', 'w', encoding='utf-8') as resultfile2:
resultfile2.write('--------------檔案2與檔案1的差異-------------------' + '\n')
diff_set2 = set(text2_lines).difference(set(text1_lines))
for j in diff_set2:
resultfile2.write(str(j) + '\n')
if __name__ == '__main__':
parser = argparse.argumentparser(description="傳入兩個檔案引數")
parser.add_argument('-f1', action='store', dest='filename1', required=true)
parser.add_argument('-f2', action='store', dest='filename2', required=true)
given_args = parser.parse_args()
filename1 = given_args.filename1
filename2 = given_args.filename2
begin = datetime.datetime.now()
print('任務開始:'+ str(begin))
diff_file(filename1, filename2)
end = datetime.datetime.now()
print('任務結束,耗時:'+ str((end-begin)))
簡單實現textview文字每隔兩秒就改變一次
首先布局只需要乙個textview即可,這裡不再貼出 實現原理就是子執行緒實現乙個死迴圈,每隔兩秒給主線程傳送乙個訊息,主線程在接收到訊息時更改控制項狀態 這個方法可以實現文字每隔兩秒就改變一次,public void texttask else super.handlemessage msg ne...
通過for迴圈每隔兩秒按順序列印出arr中的數字
方法1 var i 0 var arr 1,2,3,4,5,6 function f 方法2 var arr 1,2,3,4,5,6 var j 0 function fn for var i 0 i arr.length i 這裡我們另外乙個全域性變數來儲存值,每執行一次函式fn,j就加一次,所以...
交換兩數方法對比
異或運算 void swap int a,int b 臨時變數方法 void swap int a,int b 異或方法的缺點 對於臨時變數法,每次賦值只要讀取乙個變數的值到暫存器,然後再從暫存器寫回到另乙個變數中即可,前後涉及兩次記憶體寫入操作 但是對於異或運算操作,每次都需要讀取兩個資料到暫存器...