python os模組和hashlib模組

2021-10-06 03:11:57 字數 1641 閱讀 2572

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 可以取代作業系統特定的路徑分割符...