废话不说,直接代码
import os
import hashlib
import json
class compuleteHash:
# get files under folder
def __init__(self):
self.files=[]
self.hashs=[]
def getFiles(self,dicPath):
for item in os.listdir(dicPath):
if os.path.isdir(os.path.join(dicPath,item)):
self.getFiles(os.path.join(dicPath,item))
else:
self.files.append(os.path.join(dicPath,item))
# get file hash
def gethash(self):
for item in self.files:
self.hash(item)
def hash(self,filePath):
md5 = hashlib.md5()
try:
print(filePath)
with open(filePath, 'rb') as f:
while True:
data = f.read()
if not data:
break
md5.update(data)
print(md5.hexdigest())
self.hashs.append(md5.hexdigest())
except:
self.files.remove(filePath)
# serialize
def serilize(self):
dic={}
dic["name"]='test'
dic["value"]=self.hashs
string=json.dumps(dic)
with open('data.txt', 'a+') as f: # ‘a’表示在不删除原数据的情况下在文件末尾写入数据
f.write(string)
f.write('\n')
dic=compuleteHash()
dic.getFiles(r'C:\Users\XChen32\Desktop\New Empolyee')
print(len(dic.files))
dic.gethash()
dic.serilize()