Heim > Backend-Entwicklung > Python-Tutorial > MD5 und SHA1 von Python generierten Dateien

MD5 und SHA1 von Python generierten Dateien

大家讲道理
Freigeben: 2016-11-09 10:46:02
Original
1661 Leute haben es durchsucht

MD5 und SHA1 der generierten Datei

#coding=UTF-8
 
def fil_changefileext(filename,extname=''):
    # FIL ChangeFileExt 改变文件扩展名
    # filename    输入的文件路径名
    # extname=''  要更改分扩展名,如 .txt
    import os
    try:
        if extname[0]<>&#39;.&#39;:
            extname=&#39;.&#39;+extname
    except:
        extname=&#39;&#39;
    if os.path.splitext(filename)[1]==&#39;&#39;:
        uouttxt=filename+&#39;.&#39;+extname
    elif os.path.splitext(filename)[1]==&#39;.&#39;:
        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,&#39;w&#39;)
        outfile.writelines(fstr)
        outfile.close()
        return True   
    except:
        return False
     
#系统主程序开始
#-------------------------------------------------------
if __name__ == &#39;__main__&#39;:    
    import os,sys,math
    # if len(sys.argv)==1:sys.argv.append(r&#39;c:\FreeNAS-8.0.4-RELEASE-x64.iso&#39;)
    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,&#39;.md5&#39;)
            fsha1=fil_changefileext(filepathname,&#39;.sha&#39;)
            ffm=os.path.basename(filepathname)            
            #开始处理
            print &#39;Program Runing "&#39;+filepathname+&#39;" ...&#39;
            import hashlib
            try:
                umd5str = hashlib.md5()
                usha1str = hashlib.sha1()
                xfilepathname=unicode(filepathname,&#39;utf8&#39;)
                #需要使用二进制格式读取文件内容
                ufile = file(xfilepathname,&#39;rb&#39;)
                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 &#39;[&#39;+&#39;*&#39;*ppos +&#39;=&#39;*(pmax-ppos)+&#39;] &#39;+str(pposbfh) +&#39;%&#39;
                    #打印进度问题未解决,不知道print函数怎么退回到行首覆盖输出,不换行我倒是知道,加个“,”  
                    pjy=ppos 
                uoutstrmd5=str(umd5str.hexdigest())
                uoutstrsha1=str(usha1str.hexdigest())
                ufile.close()
                print &#39;&#39;
                fil_str2file(uoutstrmd5+&#39; *&#39;+ffm+&#39;\n&#39;,fmd5)
                fil_str2file(uoutstrsha1+&#39; *&#39;+ffm+&#39;\n&#39;,fsha1)
                print &#39;Task is completed !&#39; + r&#39; [ XingHe Studio File to MD5 and SHA1 ]&#39;               
            except:        
                print &#39;Error !&#39; + r&#39; [ XingHe Studio File to MD5 and SHA1 ]&#39;
        else:
            print &#39;File "&#39;+filepathname+&#39;" not exist!&#39;+ r&#39; [ XingHe Studio File to MD5 and SHA1 ]&#39;
    else:
        print  r&#39; [ XingHe Studio File to MD5 and SHA1 ]&#39;
Nach dem Login kopieren


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage