有2個文件,其中第2個文件是第一個文件中數據的增減量文件(第2個文件內數據與第1個大致相同,有些新增的數據,有些刪減的數據,數據在文件內已經逐條換行),我要寫一個函數,提取出在一個文件但不在另一個文件中的數據,函數如下:def filefind(src,des):sf = open(src)df = open(des)sfline = sf.readlines()dfline = df.read()tmp = []for lines in sfline:if dfline.find(lines) == -1:tmp.append(lines)print tmpelse:print dfline.find(lines)sf.close()df.close()return tmpsrc,des是2個文件路徑,print語句用于測試,但運行時發現效率一般,因為文件內數據很多(250w條),所以一次大概要很長時間才能完成,有沒有什么更高效率的方法?
3 回答

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
可以用 difflib庫,下面給一個例子,具體需求自己研究
假如在同一個目錄下有a.txt, b.txt 兩個文本文件
a.txt 內容是
aaa
bbb
b.txt內容是
aaa
ccc
1234567 | import difflib a = open ( 'a.txt' , 'U' ).readlines() b = open ( 'b.txt' , 'U' ).readlines() diff = difflib.ndiff(a, b) sys.stdout.writelines(diff) |
結果是:
aaa
- bbb+ ccc

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
def filefine(src, des):
retrun set(open(des).readlines()) - set(open(src).readlines())
x64的話,應該沒問題
添加回答
舉報
0/150
提交
取消