python生成文件md5_Python生成文件的MD5和sha1

生成文件的MD5和sha1

#coding=UTF-8

def fil_changefileext(filename,extname=''):

# FIL ChangeFileExt 改变文件扩展名

# filename 输入的文件路径名

# extname='' 要更改分扩展名,如 .txt

import os

try:

if extname[0]<>'.':

extname='.'+extname

except:

extname=''

if os.path.splitext(filename)[1]=='':

uouttxt=filename+'.'+extname

elif os.path.splitext(filename)[1]=='.':

uouttxt=filename+extname

else:

uouttxt=filename[:0-len(os.path.splitext(filename)[1])]+extname

return uouttxt

def fil_str2file(fstr,filename):

# FIL STR2File 把字符串保存到文件

try:

outfile=open(filename,'w')

outfile.writelines(fstr)

outfile.close()

return True

except:

return False

#系统主程序开始

#-------------------------------------------------------

if __name__ == '__main__':

import os,sys,math

# if len(sys.argv)==1:sys.argv.append(r'c:\FreeNAS-8.0.4-RELEASE-x64.iso')

if len(sys.argv)>1:

filepathname=sys.argv[1]

if os.path.isfile(filepathname) :

fmaxs = os.path.getsize(filepathname)+0.00

fpos = 0.00

ppos=0

pmax=50

pjy=0

fmd5=fil_changefileext(filepathname,'.md5')

fsha1=fil_changefileext(filepathname,'.sha')

ffm=os.path.basename(filepathname)

#开始处理

print 'Program Runing "'+filepathname+'" ...'

import hashlib

try:

umd5str = hashlib.md5()

usha1str = hashlib.sha1()

xfilepathname=unicode(filepathname,'utf8')

#需要使用二进制格式读取文件内容

ufile = file(xfilepathname,'rb')

while True:

datas = ufile.read(1024*512)

if not datas: break

umd5str.update( datas )

usha1str.update( datas )

fpos=fpos+1024*512

ppos=int(math.floor(fpos / fmaxs * 50))

pposbfh=int(math.floor(fpos / fmaxs * 100))

#打印进度条

if pjy<>ppos: print '['+'*'*ppos +'='*(pmax-ppos)+'] '+str(pposbfh) +'%'

#打印进度问题未解决,不知道print函数怎么退回到行首覆盖输出,不换行我倒是知道,加个“,”

pjy=ppos

uoutstrmd5=str(umd5str.hexdigest())

uoutstrsha1=str(usha1str.hexdigest())

ufile.close()

print ''

fil_str2file(uoutstrmd5+' *'+ffm+'\n',fmd5)

fil_str2file(uoutstrsha1+' *'+ffm+'\n',fsha1)

print 'Task is completed !' + r' [ XingHe Studio File to MD5 and SHA1 ]'

except:

print 'Error !' + r' [ XingHe Studio File to MD5 and SHA1 ]'

else:

print 'File "'+filepathname+'" not exist!'+ r' [ XingHe Studio File to MD5 and SHA1 ]'

else:

print r' [ XingHe Studio File to MD5 and SHA1 ]'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值