8行代碼實(shí)現(xiàn)Python文件去重
需求描述
上周突然接到一個(gè)任務(wù),要通過(guò)XX網(wǎng)站導(dǎo)出XX年-XX年之間的數(shù)據(jù),導(dǎo)出后的文件名就是對(duì)應(yīng)日期,導(dǎo)出后發(fā)現(xiàn),竟然有的文件大小是一樣,但文件名又沒(méi)有重復(fù),所以打開(kāi)文件看了下,確實(shí)重復(fù)了,原因暫時(shí)不清楚,預(yù)測(cè)是網(wǎng)站的原因,最后發(fā)現(xiàn)大概只有 30% 的數(shù)據(jù)沒(méi)有重復(fù)。我淦!

啥也不說(shuō),首要任務(wù)還是把那些沒(méi)有重復(fù)的文件給篩選出來(lái),或是刪除重復(fù)的文件。文件很多幾百個(gè),通過(guò)一個(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
為了防止代碼有問(wèn)題,我先創(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)文章
pyqt 實(shí)現(xiàn)為長(zhǎng)內(nèi)容添加滑輪 scrollArea
今天小編就為大家分享一篇pyqt 實(shí)現(xiàn)為長(zhǎng)內(nèi)容添加滑輪 scrollArea,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
基于Tensorflow搭建一個(gè)神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)
神經(jīng)網(wǎng)絡(luò)可能會(huì)讓人感到恐懼,特別是對(duì)于新手機(jī)器學(xué)習(xí)的人來(lái)說(shuō)。這篇文章主要介紹了基于Tensorflow搭建一個(gè)神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn),從入門開(kāi)始,感興趣的可以了解一下2021-05-05
Python基礎(chǔ)請(qǐng)求庫(kù)urllib模塊使用深入探究
在Python中,urllib庫(kù)是一個(gè)強(qiáng)大的模塊,用于處理URLs,它包含了多個(gè)子模塊,其中urllib.request是用于發(fā)出HTTP請(qǐng)求的核心組件,本文將深入探討urllib的基本使用、高級(jí)功能以及一些實(shí)際場(chǎng)景的示例,方便更全面地了解這個(gè)重要的網(wǎng)絡(luò)請(qǐng)求工具2024-01-01
Python中numpy.pad()函數(shù)的使用詳解
這篇文章主要介紹了Python中numpy.pad()函數(shù)的使用詳解,在卷積神經(jīng)網(wǎng)絡(luò)中,為了避免卷積運(yùn)算導(dǎo)致輸出圖像縮小和圖像邊緣信息丟失,常常采用圖像邊緣填充技術(shù),即在圖像四周邊緣填充0,使得卷積運(yùn)算后圖像大小不會(huì)縮小,同時(shí)也不會(huì)丟失邊緣和角落的信息,需要的朋友可以參考下2023-10-10
pandas中Series和DataFrame的rank方法解析
pandas中的rank方法是用于數(shù)據(jù)排名的重要工具,它不返回排序后的數(shù)據(jù),而是數(shù)據(jù)的排名。rank方法可以處理相同數(shù)據(jù)的排名,通過(guò)平均排名方式解決排名沖突,并支持自定義排序規(guī)則及逆序排名。此外,DataFrame的rank方法允許在行或列上計(jì)算排名2024-09-09
python默認(rèn)參數(shù)調(diào)用方法解析
這篇文章主要介紹了python默認(rèn)參數(shù)調(diào)用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02

