#! /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...