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()
            f.close()
            return str(hash).upper()
        return None

上面的代码已经适用与获取绝大多数文件的md5值。

然而,仔细看代码,就会发现,在获取md5值时,实际上有一个读文件的过程。这样就会有一个问题,倘若文件非常大,大于机器内存的时候,上面的代码就会有问题,解决方法是可以分多次读取,代码如下:

#获取文件的MD5值,适用于较大的文件
    def getBigFileMD5(self,filepath):
        if self.isFile(filepath):
            md5obj = hashlib.md5()
            maxbuf = 8192
            f = open(filepath,'rb')
            while True:
                buf = f.read(maxbuf)
                if not buf:
                    break
                md5obj.update(buf)
            f.close()
            hash = md5obj.hexdigest()
            return str(hash).upper()
        return None

另外,需要注意的是:在python 3.2 版本中已经取消了 md5 模块,因此在获取md5 时,建议采用 hashlib 模块。

时间: 2024-10-10 21:18:17

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

Android获取文件的MD5值

package my.bag; import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.security.MessageDigest; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.os.Bundle; import androi

获取文件的MD5值,比较两个文件是否完全相同

代码: public class MD5Test { public static void main(String[] args) { String s1 = MD5Test.MD5Operation(new File("E:/a.csv")); String s2 = MD5Test.MD5Operation(new File("E:/data/a.csv")); System.out.println(s1.equals(s2)); } public final

iOS开发之获取文件的md5值

我们经常有下载文件上的需求 为了安全我们经常需要对文件进行md5校验 那我就来给大家分享一个很方便的获取文件md5值得方法. 首先需要引用系统库文件 #include <CommonCrypto/CommonDigest.h> /** 获取文件的md5值*/ + (NSString *)getFileMD5StrFromPath:(NSString *)path { NSFileManager *fileManager = [NSFileManager defaultManager]; if(

在浏览器端获取文件的MD5值

http://www.jianshu.com/p/940a9226fbbd 前几天接到一个奇怪的需求,要在web页面中计算文件的md5值,还好这个项目是只需兼容现代浏览器的,不然要坑死了. 其实对文件进行md5,对于后端来说是及其简单的.比如使用Node.js,只要下面几行代码就可以了: var fs= require('fs'); var crypto = require('crypto'); function md5File(path, callback) { fs.readFile(pat

获取文件的MD5值

package com.example.assetsdemo; import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.security.MessageDigest; import java.util.HashMap; import java.util.Map; public class FileDigest { /** * 获取单个文件的MD5值! * * @pa

java获取文件的md5值

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Test {

Python写自动化之ini文件的读写

在我们写一些测试工具时,经常会需要使用到配置文件,此时一般选用ini文件是比较合适的 标准并且可以通过参数命名知道参数的含义,那么使用Python如何进行ini文件的读写呢? 首先看下,读取ini文件,我们直接使用Python自带的模块ConfigParser来进行配置文件的读写 看下代码吧 def ReadConfig(configPath): configDict = {} cf = ConfigParser.ConfigParser() cf.read(configPath) sessio

linux shell 命令获取字符串/文件的MD5值

获取字符串的MD5值: 字符串"hello"的MD5: $ echo -n 'hello'|md5sum|cut -d ' ' -f1 得到的MD5值: 5d41402abc4b2a76b9719d911017c592 命令解释: md5sum: 显示或检查 MD5(128-bit) 校验和,若没有文件选项,或者文件处为"-",则从标准输入读取. echo -n : 不打印换行符. cut:  cut用来从标准输入或文本文件中剪切列或域.剪切文本可以将之粘贴到一个文

计算文件的MD5值(Java &amp; Rust)

Java public class TestFileMD5 { public final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b",