8行代碼實(shí)現(xiàn)Python文件去重
需求描述
上周突然接到一個(gè)任務(wù),要通過XX網(wǎng)站導(dǎo)出XX年-XX年之間的數(shù)據(jù),導(dǎo)出后的文件名就是對(duì)應(yīng)日期,導(dǎo)出后發(fā)現(xiàn),竟然有的文件大小是一樣,但文件名又沒有重復(fù),所以打開文件看了下,確實(shí)重復(fù)了,原因暫時(shí)不清楚,預(yù)測是網(wǎng)站的原因,最后發(fā)現(xiàn)大概只有 30% 的數(shù)據(jù)沒有重復(fù)。我淦!
啥也不說,首要任務(wù)還是把那些沒有重復(fù)的文件給篩選出來,或是刪除重復(fù)的文件。文件很多幾百個(gè),通過一個(gè)個(gè)的對(duì)比文件去刪除估計(jì)又要加班,然后突然想到 Python
有個(gè)內(nèi)置的 filecmp
能夠貌似是比較文件的,于是乎就有了這篇文章~
擼代碼ing
導(dǎo)出的文件都是保存在同一文件夾下的,格式也相同。然后,上網(wǎng)查了下 filecmp.cmp()
的用法。
filecmp.cmp(f1, f2, shallow=True)
f1/f2
:待比較的兩個(gè)文件路徑。shallow
:默認(rèn)為True,即只比較os.stat()獲取的元數(shù)據(jù)(創(chuàng)建時(shí)間,大小等信息)是否相同,設(shè)置為False的話,在對(duì)比文件的時(shí)候還要比較文件內(nèi)容。
from pathlib import Path import filecmp path_list = [path for path in Path(r'C:\Users\pc\Desktop\test').iterdir() if path.is_file()] for front in range(len(path_list) - 1): for later in range(front + 1, len(path_list)): if filecmp.cmp(path_list[front], path_list[later], shallow=False): path_list[front].unlink() # 刪除文件 break
為了防止代碼有問題,我先創(chuàng)建了一個(gè) test 文件夾,在文件夾下手動(dòng)創(chuàng)建了6個(gè)文件,1~5中只有1,2,3,4,5對(duì)應(yīng)的數(shù)字內(nèi)容,第6個(gè)為空文件。
之后再將文件全部復(fù)制一份。
▶️運(yùn)行效果
到此這篇關(guān)于8行代碼實(shí)現(xiàn)Python文件去重的文章就介紹到這了,更多相關(guān)Python文件去重內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用Numpy實(shí)現(xiàn)Kmeans算法的步驟詳解
將物理或抽象對(duì)象的集合分成由類似的對(duì)象組成的多個(gè)類的過程被稱為聚類。這篇文章主要介紹了Python使用Numpy實(shí)現(xiàn)Kmeans算法,需要的朋友可以參考下2021-11-11python實(shí)現(xiàn)SMTP郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)SMTP郵件發(fā)送功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05matplotlib 曲線圖 和 折線圖 plt.plot()實(shí)例
這篇文章主要介紹了matplotlib 曲線圖 和 折線圖 plt.plot()實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04利用matplotlib為圖片上添加觸發(fā)事件進(jìn)行交互
這篇文章主要介紹了利用matplotlib為圖片上添加觸發(fā)事件進(jìn)行交互,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04關(guān)于python selenium 運(yùn)行時(shí)彈出窗口問題
最近在做一個(gè)網(wǎng)頁代填項(xiàng)目,用到了python的selenium知識(shí),經(jīng)過了各種嘗試與搜索最后終算是較完美的解決了,下面小編給大家?guī)砹藀ython selenium 運(yùn)行時(shí)彈出窗口問題,感興趣的朋友一起看看吧2021-11-11Python實(shí)現(xiàn)圖像的二進(jìn)制與base64互轉(zhuǎn)
這篇文章主要為大家介紹了如何在Python中使用OpenCV從而實(shí)現(xiàn)圖像轉(zhuǎn)base64編碼、圖像轉(zhuǎn)二進(jìn)制編碼、二進(jìn)制轉(zhuǎn)圖像等功能,感興趣的可以跟上小編一起學(xué)習(xí)一下2022-03-03Python實(shí)現(xiàn)定時(shí)任務(wù)
本篇文章主要介紹了Python實(shí)現(xiàn)定時(shí)任務(wù),主要有5種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02