import os
os.getcwd(
)
def
walk
(dirname)
:for name in os.listdir(dirname)
: path = os.path.join(dirname,name)
if os.path.isfile(path)
:#判斷該路徑是否為乙個正常的檔案
print
(path)
else
:#如果該路徑不是檔案,則繼續遞迴
walk(path)
思路:可以利用md5演算法,計算出每個檔案的密文,再進行比較;因為如果兩個檔案的md5加密結果一致,那他們很有可能就是重複檔案、檔案內容相同。
import hashlib
import os
dic =
dict()
defduplicate
(dirname)
:for name in os.listdir(dirname)
: path = os.path.join(dirname,name)
if os.path.isfile(path)
:if os.path.splitext(path)[1
]=='.txt'
:#判斷是否為txt格式的檔案
text =
open
(path,
'rb'
) hl = halishlib.md5(
)#md5加密
hl.update(text.read())
hash_code = hl.hexdigest(
)#轉為十六進製制
text.close(
) md5 =
str(hash_code)
.lower(
)#統一轉為小寫字母,方便之後的比較
iflen
(md5)!=0
:#如果md5不為空,則加到字典中,key為路徑,value為md5密文
dic[path]
= md5
else
: duplicate(path)
#呼叫duplicate函式
duplicate(
'/users/lyuhuanyi/desktop'
)val =
dict()
# 建立新字典
for key,value in dic.items():
#遍歷所有txt格式的檔案
if value not
in val:
#判斷該md5密文是否在val中存在
val[value]
=[key]
# val字典:key為md5密文,value為路徑,而且是list型別
else
: val[value]
if i,j in val.items():
iflen
(j)>1:
#判斷val字典中,是否有value的長度大於1,大於1代表有重複的md5
print
(j)
Python os模組和shutil模組
一 python中對檔案 資料夾操作時經常用到的os模組和shutil模組常用方法。1.得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.getcwd 2.返回指定目錄下的所有檔案和目錄名 os.listdir 3.函式用來刪除乙個檔案 os.remove 4.刪除多個目錄 os.re...
python OS模組和sys模組
os模組 import os 1 os.makedirs dirname1 dirname2 可生成多層遞迴目錄 2 os.removedirs dirname1 若目錄為空,則刪除,並遞迴到上一級目錄,如若也為空,則刪除,依此類推 3 os.mkdir dirname 生成單級目錄 相當於shel...
python os介紹 Python os模組介紹
os模組主要用於執行系統命令 import os os.remname file.txt file1.txt 檔案重新命名 os.remove file1.txt 刪除檔案 os.mkdir test 建立資料夾 os.rmdir test 刪除資料夾 os.sep 可以取代作業系統特定的路徑分割符...