import os import sys dirPath = sys.argv[1] def usage(): print "python" + sys.argv[0] + "dirname" class Encrypt(object): def __init__(self,dirName): self.dirName = dirName def getFileFromDir(self): dirPath = self.dirName allFiles = os.walk(dirPath) fileHandler = open('tmp.txt','wb') for pathName, dirList, fileList in allFiles: for fileName in fileList: singleFileName = fileName absFilePath = pathName + os.sep + singleFileName fileHandler.write(absFilePath+' ') def md5Encrypt(self): import hashlib for fileName in file('tmp.txt', 'r').readlines(): fileName = fileName.strip() md5Object = hashlib.md5() with open(fileName, 'rb') as f: md5Object.update(f.read()) md5Hash = md5Object.hexdigest() print fileName+','+md5Hash if __name__ == '__main__': if len(sys.argv) != 1: usage() en = Encrypt(dirName=dirPath) en.getFileFromDir() en.md5Encrypt()
又从slqmap源码里面看到一个实现,还挺有意思的:
def md5File(filename): """ Calculates MD5 digest of a file Reference: http://stackoverflow.com/a/3431838 """ checkFile(filename) digest = hashlib.md5() with open(filename, "rb") as f: for chunk in iter(lambda: f.read(4096), ""): digest.update(chunk) return digest.hexdigest()