我正在编写一个简单的工具,允许我快速检查下载的ISO文件的MD5哈希值.这是我的算法:
import sys
import hashlib
def main():
filename = sys.argv[1] # Takes the ISO 'file' as an argument in the command line
testFile = open(filename, "r") # Opens and reads the ISO 'file'
# Use hashlib here to find MD5 hash of the ISO 'file'. This is where I'm having problems
hashedMd5 = hashlib.md5(testFile).hexdigest()
realMd5 = input("Enter the valid MD5 hash: ") # Promt the user for the valid MD5 hash
if (realMd5 == hashedMd5): # Check if valid
print("GOOD!") …Run Code Online (Sandbox Code Playgroud) 伙计们,我正在生成一个 gzip 文件的 md5sum。从技术上讲,每次压缩相同的文件,但产生的 md5sum 是不同的。我如何告诉它使用-n标志来省略原始文件名和时间戳?
f_in = open(tmpFile, 'rb')
f_out = gzip.open(uploadFile, 'wb')
f_out.writelines(f_in)
f_out.close()
f_in.close()
Run Code Online (Sandbox Code Playgroud)
谢谢!
我是Python的新手并且有疑问.如何在Python中检查两个文件(字符串和文件)是否具有相同的内容?我需要下载一些东西并重命名,但我不想用两个或更多不同的名称保存相同的东西(相同的东西可以在不同的IP地址).
我一直在使用Python进行一些编程(仍然是n00b)并且遇到了一些奇怪的事情.我做了一个小程序来查找在命令行传递给它的文件名的MD5哈希值.我用了一个功能,我发现这里的SO.当我对文件运行它时,我得到一个哈希"58a ... 113".但是当我在\ Python26\Tools\Scripts \中运行Microsoft的FCIV或md5sum.py时,我得到一个不同的哈希,"591 ... ae6".脚本中md5sum.py的实际散列部分是
m = md5.new()
while 1:
data = fp.read(bufsize)
if not data:
break
m.update(data)
out.write('%s %s\n' % (m.hexdigest(), filename))
Run Code Online (Sandbox Code Playgroud)
这看起来在功能上与其他答案中给出的函数中的代码相同......我缺少什么?(这是我第一次发布到stackoverflow,如果我做错了,请告诉我.)
我编写了一个基本程序来检查包含许多 jpeg 文件(500000+)的目录树,验证它们没有损坏(大约 3-5% 的文件似乎以某种方式损坏),然后对文件(即使是损坏的文件)并将信息保存到数据库中。
有问题的 jpeg 文件位于 windows 系统上,并通过 cifs 安装在 linux box 上。它们的大小大多在 4 兆字节左右,尽管有些可能稍大或稍小。
当我运行该程序时,它似乎工作得很好一段时间,然后它因以下错误而失败。这是在它处理了大约 1100 个文件之后(错误表明问题发生在尝试打开 4.5 兆的文件时)。
现在我明白我可以捕获这个错误并继续或重试等,但我很好奇为什么它首先发生,如果捕获和重试实际上可以解决问题 - 或者它会卡在重试中(除非我当然限制重试但随后会跳过一个文件)。
我在 debian 系统上使用“Python 2.7.5+”来运行它。系统至少有 4 Gig(可能是 8 个)的 ram,并且 top 报告脚本在运行时的任何时候都使用不到 1% 的 ram 和不到 3% 的 cpu。同样,此脚本运行的 jpeginfo 也使用同样少量的内存和 CPU。
为了避免在读取文件时使用太多内存,我采用了本回答中给出的另一个问题的方法:https : //stackoverflow.com/a/1131255/289545
此外,您可能会注意到“jpeginfo”命令在寻找“[OK]”响应的 while 循环中。这是因为如果“jpeginfo”认为它找不到文件,它会返回 0,因此 subprocess.check_output 调用不会将其视为错误状态。
我确实想知道 jpeginfo 在第一次尝试时似乎无法找到某些文件的事实是否可能相关(我怀疑是这样),但返回的错误表示无法分配内存而不是文件未找到。
错误:
Traceback (most recent call last):
File "/home/m3z/jpeg_tester", line 95, in <module>
main()
File "/home/m3z/jpeg_tester", line 32, in __init__
self.recurse(self.args.dir, self.scan) …Run Code Online (Sandbox Code Playgroud)