python 通过文件路径获取文件hash值

 1 import hashlib
 2 import os,sys
 3
 4 def CalcSha1(filepath):
 5     with open(filepath,‘rb‘) as f:
 6         sha1obj = hashlib.sha1()
 7         sha1obj.update(f.read())
 8         hash = sha1obj.hexdigest()
 9         print(hash)
10         return hash
11
12 def CalcMD5(filepath):
13     with open(filepath,‘rb‘) as f:
14         md5obj = hashlib.md5()
15         md5obj.update(f.read())
16         hash = md5obj.hexdigest()
17         print(hash)
18         return hash
19
20 if __name__ == "__main__":
21     if len(sys.argv)==2 :
22         hashfile = sys.argv[1]
23         if not os.path.exists(hashfile):
24             hashfile = os.path.join(os.path.dirname(__file__),hashfile)
25             if not os.path.exists(hashfile):
26                 print("cannot found file")
27             else
28             CalcMD5(hashfile)
29     else:
30         CalcMD5(hashfile)
31         #raw_input("pause")
32 else:
33     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值

时间: 2024-10-08 06:03:52

python 通过文件路径获取文件hash值的相关文章

文件路径获取目录API

总有这样一个API被人遗忘在角落, 从文件路径获取目录名: Desc:Removes the trailing file name and backslash from a path, if it has them. Syntax: BOOL PathRemoveFileSpec( LPTSTR pszPath) HEADR:shlwapi.h TCHAR PathStr[MAX_PATH]; GetModuleFileName(NULL, PathStr, MAX_PATH); PathRem

C#中的文件路径获取函数和文件名字获取函数小结

1. 获取绝对文件路径 代码如下: System.IO.Path.GetFullPath(string path) string fileName = "myfile.ext"; string path1 = @"mydir"; string path2 = @"\mydir"; string fullPath; fullPath = Path.GetFullPath(path1); fullPath = Path.GetFullPath(fil

python封装configparser模块获取conf.ini值(优化版)

昨天晚上封装了configparser模块,是根据keyname获取的value.python封装configparser模块获取conf.ini值 我原本是想通过config.ini文件中的section和keyname获取value的,前两天怎么都调试不通过.今天百度了一下,有人通过字典的方式把我的和这个想法实现了,我把这个例子修改了一下,代码如下,并通过测试,以后可以用在自动化测试框架中: 1 #coding:utf-8 2 import os 3 import ConfigParser

C# 实现访问FTP服务器下载文件,获取文件夹信息小记

最近因为要开发广告制作工具,自动生成广告流,需要获取第三方服务器上的文件资源,经过摸索,从这次经历中记录下. FtpWebRequest reqFtp; WebResponse response = null; //获取文件夹信息 reqFtp = (FtpWebRequest)WebRequest.Create(this.ftp);//ftp://IP:port/文件夹名1/文件夹名2/.../文件夹名 reqFtp.UseBinary = true; reqFtp.KeepAlive = f

使用CFileFind类查找文件并获取文件图标

以CListCtrl为例,使用CFileFind类查找文件并获取文件的图标填充到CListCtrl中 主要代码如下: int CTestDlg::OnInitDialog(void) { //获取控件指针 CListCtrl* plst_ctl=(CListCtrl*)GetDlgItem(IDC_LIST1);//IDC_LIST1为CListCtrl控件的ID //添加图标(将图标存放在CImageList对象中,并与CListCrtl控件相关联) //m_imagelist_b.Creat

Python写自动化之获取文件的MD5值

使用Python 获取文件的MD5 值是一件很简单的事情,Python 提供了md5 和 hashlib 两个模块,都可以获取到文件的md5值. 代码如下: #获取文件的MD5值,适用于小文件 def getFileMD5(self,filepath): if self.isFile(filepath): f = open(filepath,'rb') md5obj = hashlib.md5() md5obj.update(f.read()) hash = md5obj.hexdigest()

Python os模块--路径、文件、系统命令等操作

os模块包含普遍的操作系统功能. 注意:函数参数path是文件或目录的路径,filename是文件的路径,dirname是目录的路径,路径可以是相对路径,也可绝对路径 常见或重要的函数为加粗字体 os模块: os.name   返回当前操作系统名称('posix', 'nt', 'os2', 'mac', 'ce', 'riscos'),windows为'nt',linux为'posix' os.sep == os.path.sep 返回路径各部分之间的分隔符,linux是'/',windows

python文件夹遍历,文件操作,获取文件修改创建时间

在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前目录('.')os.chdir(dirname):改变工作目录到dirname os.path.isdir(name):判断name是不是一个目录,name不是目录就返回falseos.path.isfile(name):判断name是不是一个文件,不存在name也返回falseos.path.ex

Bash Shell 解析路径获取文件名称和文件夹名

前言 还是今天再写一个自己主动化打包脚本.用到了从路径名中获取最后的文件名称.这里记录一下实现过程. 当然,最后我也会给出官方的做法.(ps:非常囧,实现完了才发现原来Bash Shell有现成的函数) 获取文件名称 如果给定的路径名为: /tmp/csdn/zhengyi/test/zhengyi.txt awk解法 用"/"做分隔符,然后打印出最后的那一部分. 实现代码例如以下: resFile=`echo /tmp/csdn/zhengyi/test/adb.log | awk