[python怎么实现通过文件路径获取文件大小]Python怎么实现通过文件路径获取文件hash值

更新时间:2021-06-30    来源:python    手机版     字体:

【www.bbyears.com--python】

 

 代码如下

importhashlib

importos,sys

defCalcSha1(filepath):

  withopen(filepath,'rb') as f:

    sha1obj=hashlib.sha1()

    sha1obj.update(f.read())

    hash=sha1obj.hexdigest()

    print(hash)

    returnhash

defCalcMD5(filepath):

  withopen(filepath,'rb') as f:

    md5obj=hashlib.md5()

    md5obj.update(f.read())

    hash=md5obj.hexdigest()

    print(hash)

    returnhash

if__name__=="__main__":

  iflen(sys.argv)==2:

    hashfile=sys.argv[1]

    ifnotos.path.exists(hashfile):

      hashfile=os.path.join(os.path.dirname(__file__),hashfile)

      ifnotos.path.exists(hashfile):

        print("cannot found file")

      else

      CalcMD5(hashfile)

  else:

    CalcMD5(hashfile)

    #raw_input("pause")

else:

  print("no filename")

 

使用Python进行文件Hash计算有两点必须要注意:

1、文件打开方式一定要是二进制方式,既打开文件时使用b模式,否则Hash计算是基于文本的那将得到错误的文件Hash(网上看到有人说遇到Python的Hash计算错误在大多是由于这个原因造成的)。

2、对于MD5如果需要16位(bytes)的值那么调用对象的digest()而hexdigest()默认是32位(bytes),同理Sha1的digest()和hexdigest()分别产生20位(bytes)和40位(bytes)的hash值

本文来源:http://www.bbyears.com/jiaocheng/126821.html

热门标签

更多>>

本类排行