python計算檔案的md5值

2021-09-27 01:50:18 字數 1779 閱讀 6592

python3.6 windows下

需求:利用python計算檔案的md5值

一,**:

import hashlib, sys, os

def listallfiles(root_dir, suffix=''):

"""獲取指定目錄下的所有檔案

root_dir:指定目錄

suffix:檔案的格式(檔名以什麼結尾[.txt|.zip|.cfg|...], 不指定的話就預設該目錄下的所有檔案)

"""files =

file_list = os.listdir(root_dir)

for i in range(0, len(file_list)):

path = os.path.join(root_dir, file_list[i])

if os.path.isdir(path):

files.extend(listallfiles(path, suffix))

if os.path.isfile(path):

if suffix and path.endswith(suffix) or not suffix:

return files

def md5sum(files, md5_file):

"""計算檔案的md5值

files:要計算的檔案

md5_file:儲存md5值的檔案

"""print('total file size: ', len(files))

if len(files) > 0:

with open(md5_file, 'w', encoding='utf-8') as f:

for file in files:

md5_val = hashlib.md5(open(file,'rb').read()).hexdigest()

str = file.split('\\')[-1] + ': ' + md5_val + '\n'

f.write(str)

# 指定目錄,前面加『r』是為了防止識別不了有些檔名帶空格

dest_dir = r"c:\\users\\administrator\\desktop\\ppt"

# 指定md5值儲存的檔案

md5_file = 'result.txt'

if __name__ == '__main__':

print('usage: ', sys.ar**[0], '[.zip|.sh|.cfg|...]')

files =

argc = len(sys.ar**)

if argc > 1:

suffix_dict = {}

for i in range(argc - 1):

suffix_dict[sys.ar**[i+1]] = none

for k, v in suffix_dict.items():

files.extend(listallfiles(dest_dir, k))

else:

files = listallfiles(dest_dir)

md5sum(files, md5_file)

print('----------- completed ----------------')

二,windows下執行結果:

三,linux下就可以直接用md5sum命令

python計算檔案的MD5值

一 import sys import hashlib import os.path filename sys.argv 1 if os.path.isfile filename fp open filename,rb contents fp.read fp.close print hashlib....

python計算檔案的md5值

最近要開發乙個基於python的合併資料夾 目錄的程式,本來的想法是基於修改時間的比較,即判斷檔案有沒有改變,比較兩個檔案的修改時間即可。這個想法在windows的pc端下測試沒有問題。但是當把乙個檔案從pc端複製到優盤時出現了乙個問題,複製到優盤的檔案比pc端的檔案慢了兩秒鐘!這裡我用的複製函式是...

用python計算檔案的md5值

在python中內建了md5的實現,就是md5模組,因此可以很簡單的處理比較兩個檔案是否一致的問題。如以下 片斷 import os,sys,md5 f1 open f 1.txt r f2 open f 1.txt r print md5.new f1.read digest md5.new f2...