栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 生成文件的MD5和sha1

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 生成文件的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 ]'
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/226124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号