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...