python 通過md5檢查並刪除重複檔案

2021-10-09 09:06:33 字數 2827 閱讀 8233

#! /usr/bin/python3

# -*- coding:utf-8 -*-

# @time : 8/21/2020 2:41 pm

# @author : jet li

# @email : [email protected]

# @file : md5_check.py

# @software: pycharm

import os

import hashlib

from tqdm import tqdm

defget_md5

(file_path):if

not os.path.isfile(file_path)

:return

file_hash = hashlib.md5(

) f =

open

(file_path,

'rb'

)while

true

: b = f.read(

8096)if

not b:

break

file_hash.update(b)

f.close(

)return file_hash.hexdigest(

)class

md5delete

(object):

""" 刪除同目錄下md5相同的檔案。

"""def__init__

(self, dir_path)

: self.dir_path = dir_path

self.file_path_md5 =

defcheck_md5

(self)

: dir_path = self.dir_path

for root, dirs, files in tqdm(os.walk(dir_path)):

# print('root:', root)

for i in tqdm(

range

(len

(files)))

: file_path = os.path.join(root, files[i]

) file_md5 = get_md5(file_path)

self.file_path_md5[file_path]

= file_md5

# print(file_md5)

defjudge_md5_delete

(self)

: length =

len(self.file_path_md5)

i, j =0,

0 is_delete =

0 pbar = tqdm(total=length)

new_file_path_md5_list =

list

(self.file_path_md5)

while

true

: pbar.update(1)

is_delete =

0 j =

0if i >= length:

break

first_file_md5 = self.file_path_md5[new_file_path_md5_list[i]

] first_file_path = new_file_path_md5_list[i]

for j in

range

(length)

:if j >= length:

break

if j <= i:

continue

second_file_md5 = self.file_path_md5[new_file_path_md5_list[j]

] second_file_path = new_file_path_md5_list[j]

if first_file_md5 == second_file_md5:

self.file_path_md5.pop(second_file_path)

# 刪除了需要重新生成list

new_file_path_md5_list =

list

(self.file_path_md5)

is_delete =

1 length =

len(self.file_path_md5)

os.remove(second_file_path)

else

: j +=

1if is_delete ==0:

i +=

1 pbar.close(

)pass

defrun

(self)

: self.check_md5(

) self.judge_md5_delete(

)def

run():

mmd5 = md5delete(r"e:\z_軟體快取\有重複的資料夾\list0"

) mmd5.run(

)pass

if __name__ ==

'__main__'

: run(

)

目前我僅僅測試了乙個目錄,我朋友使用反饋的時候多個目錄也是可以的,關於是否可以,就要自己試試了。

通過md5值檢查檔案資訊是否相同

bin bash md5值是通過統計乙個檔案的大小 許可權 內容等進行集合得來的值,可以通過比較兩個檔案的md5值進行比較這兩個檔案是否一致 通過md5值進行檔案比較 版本 v1.0 date 2016 10 19 author salt email zwj92087 163.com dir pat...

Python實現計算MD5

本文章和我的部落格同時發布 厲害部落格 md5 是 message digest algorithm5 的縮寫,md5 是一種資訊摘要演算法。在平時的開發中可能要計算 md5,可是自己寫乙個演算法很麻煩,這時就可以使用 python 的內建模組 hashlib。hashlib 能計算 sha1 md...

python 使用md5加密

python中使用md5進行加密字串 author administrator coding utf 8 import hashlib aa 123456 需要加密的字串 defmd5encode str 建立md5物件 m hashlib.md5 m.update str 傳入需要加密的字串進行m...