在hashlib和zlib周围环绕的模块和命令行工具,以便于生成文件和目录的校验和/哈希。

filehash的Python项目详细描述


Python模块,以便于计算文件的校验和或哈希测试了Python2.7、Python3.6、PyPy2.7和PyPy3.5。目前支持Adler-32CRC32MD5SHA-1SHA-256 and SHA-512

FileHash

FileHash类将hashlib(为md5、sha-1、sha-256和sha-512提供哈希)和zlib(为adler-32和crc32提供校验和)模块包装起来,并包含以下方法:

  • hash_file(filename)-计算单个文件的文件哈希。返回带有十六进制摘要的字符串
  • hash_dir(path, pattern='*')-计算整个目录的文件哈希值。返回元组列表,其中每个元组包含文件名和计算的哈希。
  • verify_sfv(sfv_filename)-读取指定的SFV(简单文件验证)文件,并为列出的文件计算CRC32校验和,将计算出的CRC32校验和与指定的预期校验和进行比较返回一个元组列表,其中每个元组包含文件名和一个布尔值,指示计算出的CRC32校验和是否与预期的CRC32校验和匹配要了解有关SFV文件的更多信息,请参见Simple file verification entry in Wikipedia
  • verify_checksums(checksum_filename)-读取指定的文件并计算列出的文件的哈希值,将计算出的哈希值与指定的预期哈希值进行比较。返回一个元组列表,其中每个元组包含文件名和一个布尔值,该值指示计算的哈希是否与预期的哈希匹配。

对于校验和文件,该文件应为纯文本文件,其中每一行的条目格式如下:

{hash}[SPACE][ASTERISK]{filename}

此格式是程序(如用于生成校验和文件的工具sha1sum系列)使用的格式。下面是由sha1sum

生成的示例
f7ef3b7afaf1518032da1b832436ef3bbfd4e6f0 *lorem_ipsum.txt
03da86258449317e8834a54cf8c4d5b41e7c7128 *lorem_ipsum.zip

FileHash构造函数有两个可选参数:

  • hash_algorithm='sha256'-指定要使用的哈希算法有关支持的哈希/校验和算法的列表,请参见filehash.SUPPORTED_ALGORITHMS。默认为SHA256。
  • chunk_size=4096-integer指定读取文件时要使用的块大小(字节)。这在处理非常大的文件时非常有用,以避免一次将整个文件读入内存。默认块大小为4096字节。

示例用法

库的使用方法如下:

>>> import os
>>> from filehash import FileHash
>>> md5hasher = FileHash('md5')
>>> md5hasher.hash_file("./testdata/lorem_ipsum.txt")
'72f5d9e3a5fa2f2e591487ae02489388'
>>> sha1hasher = FileHash('sha1')
>>> sha1hasher.hash_dir("./testdata", "*.zip")
[FileHashResult(filename='lorem_ipsum.zip', hash='03da86258449317e8834a54cf8c4d5b41e7c7128')]
>>> sha512hasher = FileHash('sha512')
>>> os.chdir("./testdata")
>>> sha512hasher.verify_checksums("./hashes.sha512")
[VerifyHashResult(filename='lorem_ipsum.txt', hashes_match=True), VerifyHashResult(filename='lorem_ipsum.zip', hashes_match=True)]
>>> crc32hasher = FileHash('crc32')
>>> crc32hasher.verify_sfv("./lorem_ipsum.sfv")
[VerifyHashResult(filename='lorem_ipsum.txt', hashes_match=True), VerifyHashResult(filename='lorem_ipsum.zip', hashes_match=True)]

chkfilehash命令行工具

名为chkfilehash的命令行工具也包含在filehash包中。下面是如何使用该工具的示例:

$ chkfilehash -a sha512 -c hashes.sha512
lorem_ipsum.txt: OK
lorem_ipsum.zip: OK
$ chkfilehash -a crc32 lorem_ipsum.zip
7425D3BE *lorem_ipsum.zip
$

不带任何参数或使用-h/--help开关运行该工具以获得用法屏幕。

许可证

这是根据麻省理工学院的许可证发布的。有关详细信息,请参阅此存储库中的LICENSE文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用导入范围函数下载文件时发生java错误   java是否提供内置的静态字符串。比较方法?   添加“再次播放?”Java中我的随机数猜测游戏的功能   java在tomcat 8中配置JPDA   编译器构造Java:检查编译时是否存在给定的方法名   当RedistreLimiter阻止请求时,java Spring云网关全局筛选器未执行   java无法将带有Gradle的单片Spring Boot应用程序转换为多模块   Eclipse(IDE)如何在没有公共类的情况下在Java中运行main方法?   用Java上传Youtube帖子   没有css和javascript的html Java httpGet页面正文   具有相同哈希代码的java Equal对象不会映射到HashMap中的相同值   字符串格式在Java中如何向数字中添加左填充的零?   java表示XML/DOM对象中attributesvalues或textnodes上的“条件”   JavaSpringJPA根据从POST请求体获取的列和值查询数据库   java BouncyCastle编码差异   java从intellij idea中提取运行命令   java类型、属性、实例和值之间的关系   java除了一个复选框外,屏幕上没有显示任何内容