有2個(gè)文件,其中第2個(gè)文件是第一個(gè)文件中數(shù)據(jù)的增減量文件(第2個(gè)文件內(nèi)數(shù)據(jù)與第1個(gè)大致相同,有些新增的數(shù)據(jù),有些刪減的數(shù)據(jù),數(shù)據(jù)在文件內(nèi)已經(jīng)逐條換行),我要寫一個(gè)函數(shù),提取出在一個(gè)文件但不在另一個(gè)文件中的數(shù)據(jù),函數(shù)如下: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個(gè)文件路徑,print語句用于測試,但運(yùn)行時(shí)發(fā)現(xiàn)效率一般,因?yàn)槲募?nèi)數(shù)據(jù)很多(250w條),所以一次大概要很長時(shí)間才能完成,有沒有什么更高效率的方法?
3 回答

喵喵時(shí)光機(jī)
TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
可以用 difflib庫,下面給一個(gè)例子,具體需求自己研究
假如在同一個(gè)目錄下有a.txt, b.txt 兩個(gè)文本文件
a.txt 內(nèi)容是
aaa
bbb
b.txt內(nèi)容是
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) |
結(jié)果是:
aaa
- bbb+ ccc

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