利用Python生成文件md5校驗(yàn)值函數(shù)的方法
前言
在linux有個(gè)命令叫做md5sum,能生成文件的md5值,一般情況下都會(huì)將結(jié)果記錄到一個(gè)文件中用于校驗(yàn)使用,比如會(huì)這樣使用:
[crazyant@localhost PythonMd5]$ more sample_file www.crazyant.net www.51projob.com [crazyant@localhost PythonMd5]$ md5sum sample_file > sample_file.md5file [crazyant@localhost PythonMd5]$ more sample_file.md5file 311d384505e3622ccf85d88930e2b0a0 sample_file [crazyant@localhost PythonMd5]$ md5sum -c sample_file.md5file sample_file: OK
其中md5sum -c
用于檢測(cè)生成的md5值是否正確。
使用python生成文件md5值以及生成和md5sum結(jié)果一樣的結(jié)果文件
python可以使用hashlib的md5模塊對(duì)文件內(nèi)容進(jìn)行md5校驗(yàn)碼生成,如果要生成和md5sum一樣的結(jié)果文件,只需要將MD5結(jié)果值和文件名輸出一行,中間有兩個(gè)空格輸出即可。
測(cè)試代碼:
# -*- encoding:utf-8 -*- from hashlib import md5 import os def generate_file_md5value(fpath): '''以文件路徑作為參數(shù),返回對(duì)文件md5后的值 ''' m = md5() # 需要使用二進(jìn)制格式讀取文件內(nèi)容 a_file = open(fpath, 'rb') m.update(a_file.read()) a_file.close() return m.hexdigest() def generate_file_md5sumFile(fpath): fname = os.path.basename(fpath) fpath_md5 = "%s.md5" % fpath fout = open(fpath_md5, "w") fout.write("%s %s\n" % (generate_file_md5value(fpath), fname.strip())) print "generate success, fpath:%s" % fpath_md5 fout.flush() fout.close() if __name__ == "__main__": fpath = "/home/users/workbench/PythonMd5/sample_file" # 測(cè)試一:以文件路徑作為參數(shù),獲得md5后的字符串 print generate_file_md5value(fpath) # 測(cè)試二:生成和linux命令:md5sum同樣結(jié)果的.md5文件 generate_file_md5sumFile(fpath)
運(yùn)行結(jié)果:
[crazyant@localhost PythonMd5]$ python generateMd5file.py 311d384505e3622ccf85d88930e2b0a0 generate success, fpath:/home/crazyant/workbench/PythonMd5/sample_file.md5 [crazyant@localhost PythonMd5]$ md5sum -c sample_file.md5 sample_file: OK
注意點(diǎn)
在windows下開(kāi)發(fā)的代碼,如果直接提交到linux運(yùn)行,經(jīng)常因?yàn)閣indows下的換行符是\r\n而linux是\n的緣故導(dǎo)致代碼執(zhí)行失敗,一般情況下都要進(jìn)行一下轉(zhuǎn)換。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
ndarray數(shù)組的轉(zhuǎn)置(transpose)和軸對(duì)換方式
這篇文章主要介紹了ndarray數(shù)組的轉(zhuǎn)置(transpose)和軸對(duì)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Python判斷兩個(gè)文件是否相同與兩個(gè)文本進(jìn)行相同項(xiàng)篩選的方法
今天小編就為大家分享一篇關(guān)于Python判斷兩個(gè)文件是否相同與兩個(gè)文本進(jìn)行相同項(xiàng)篩選的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03Tensorflow加載預(yù)訓(xùn)練模型和保存模型的實(shí)例
今天小編就為大家分享一篇Tensorflow加載預(yù)訓(xùn)練模型和保存模型的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07python 用lambda函數(shù)替換for循環(huán)的方法
今天小編就為大家分享一篇python 用lambda函數(shù)替換for循環(huán)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python爬蟲(chóng)工程師面試問(wèn)題總結(jié)
本篇文章給大家總結(jié)了關(guān)于Python爬蟲(chóng)工程師面試問(wèn)題總結(jié),希望我們整理的內(nèi)容能夠幫助到大家。2018-03-03PyTorch之nn.ReLU與F.ReLU的區(qū)別介紹
這篇文章主要介紹了PyTorch之nn.ReLU與F.ReLU的區(qū)別介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06一篇文章帶你了解python標(biāo)準(zhǔn)庫(kù)--time模塊
下面小編就為大家?guī)?lái)一篇python模塊之time模塊。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-08-08