在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 http响应未定义   java在单个数组中添加浮点值和字符串值,并使用它们进行写入。CSV文件   映射中的java重复列引发实体异常,但没有重复列   java为什么是线程。stop()方法不安全吗?   如何在java中从trycatch块返回数组?   java如何使用多个线程作为客户端,每个线程都在switch语句中执行一项任务   Android GridView上的java滚动位置跳转   java丰富:listShuttle格式   Java中的macos评测本机方法奇怪的结果   这个Java程序需要是两个独立的文件吗   无法使用selenium Java或JavascriptExecutor发送密钥/单击   java如何配置Jetty在类更改时重新加载WebAppContext   java我不能发布com。安卓截击服务器错误   java如何在使用addOnScrollListener时显示滚动条   java如何避免数据模型贫乏?存储库可以注入实体吗?   没有集合的java选择排序。在ArrayList中排序   macos在MacOSX上升级JDK   java如何使用jpa模板编写查询