日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python源码用于查找指定具有相同内容的文件

發(fā)布時間:2025/3/20 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python源码用于查找指定具有相同内容的文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
把開發(fā)過程中經(jīng)常用的內(nèi)容珍藏起來,下邊資料是關(guān)于python用于查找指定具有相同內(nèi)容的文件的代碼,應該能對碼農(nóng)有較大好處。?

# doublesdetector.py 1.0p import os, os.path, string, sys, shamessage = """ doublesdetector.py 1.0pThis script will search for files that are identical (whatever their name/date/time).Syntax : python %s <directories>where <directories> is a directory or a list of directoriesseparated by a semicolon (;)Examples : python %s c:windowspython %s c:;d:;e: > doubles.txtpython %s c:program files > doubles.txtThis script is public domain. Feel free to reuse and tweak it. The author of this script Sebastien SAUVAGE <sebsauvage at sebsauvage dot net>def fileSHA ( filepath ) :""" Compute SHA (Secure Hash Algorythm) of a file.Input : filepath : full path and name of file (eg. 'c:windowsemm386.exe')Output : string : contains the hexadecimal representation of the SHA of the file.returns '0' if file could not be read (file not found, no read rights...)"""try:file = open(filepath,'rb')digest = sha.new()data = file.read(65536)while len(data) != 0:digest.update(data)data = file.read(65536)file.close()except:return '0'else:return digest.hexdigest()def detectDoubles( directories ):fileslist = {}# Group all files by size (in the fileslist dictionnary)for directory in directories.split(';'):directory = os.path.abspath(directory)sys.stderr.write('Scanning directory '+directory+'...')os.path.walk(directory,callback,fileslist)sys.stderr.write('n')sys.stderr.write('Comparing files...')# Remove keys (filesize) in the dictionnary which have only 1 filefor (filesize,listoffiles) in fileslist.items():if len(listoffiles) == 1:del fileslist[filesize]# Now compute SHA of files that have the same size,# and group files by SHA (in the filessha dictionnary)filessha = {}while len(fileslist)>0:(filesize,listoffiles) = fileslist.popitem()for filepath in listoffiles:sys.stderr.write('.')sha = fileSHA(filepath)if filessha.has_key(sha):filessha[sha].append(filepath)else:filessha[sha] = [filepath]if filessha.has_key('0'):del filessha['0']# Remove keys (sha) in the dictionnary which have only 1 filefor (sha,listoffiles) in filessha.items():if len(listoffiles) == 1:del filessha[sha]sys.stderr.write('n')return filesshadef callback(fileslist,directory,files):sys.stderr.write('.')for fileName in files:filepath = os.path.join(directory,fileName)if os.path.isfile(filepath):filesize = os.stat(filepath)[6]if fileslist.has_key(filesize):fileslist[filesize].append(filepath)else:fileslist[filesize] = [filepath]if len(sys.argv)>1 :doubles = detectDoubles(" ".join(sys.argv[1:]))print 'The following files are identical:'print 'n'.join(["----n%s" % 'n'.join(doubles[filesha]) for filesha in doubles.keys()])print '----' else:print message 復制代碼?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??


轉(zhuǎn)載于:https://juejin.im/post/5cd8b7c3e51d453a69177ec7

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的python源码用于查找指定具有相同内容的文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。