Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows操作系统中计算大型文件的SHA-1哈希时Python崩溃_Python_Hash_Large Files_Sha1 - Fatal编程技术网

在Windows操作系统中计算大型文件的SHA-1哈希时Python崩溃

在Windows操作系统中计算大型文件的SHA-1哈希时Python崩溃,python,hash,large-files,sha1,Python,Hash,Large Files,Sha1,我想知道我是否可以对这个python脚本有一些新的认识。它适用于中小型文件,但对于大型文件(4-8GB左右),运行几分钟后会莫名其妙地崩溃 或: *已更新* 用于计算大型文件的SHA-1散列的工作python脚本。感谢伊格纳西奥·巴斯克斯·艾布拉姆斯指出问题所在,感谢汤姆·齐奇提供代码 要使用,只需将要散列的文件拖放到脚本顶部即可。或者,您可以使用命令提示符并使用: SHA-1HashGen.py Path&File WARE SHA-1HashGen.py是脚本的文件名,Pat

我想知道我是否可以对这个python脚本有一些新的认识。它适用于中小型文件,但对于大型文件(4-8GB左右),运行几分钟后会莫名其妙地崩溃

或:

*已更新*

用于计算大型文件的SHA-1散列的工作python脚本。感谢伊格纳西奥·巴斯克斯·艾布拉姆斯指出问题所在,感谢汤姆·齐奇提供代码

要使用,只需将要散列的文件拖放到脚本顶部即可。或者,您可以使用命令提示符并使用:

SHA-1HashGen.py Path&File 
WARE SHA-1HashGen.py是脚本的文件名,Path&file是要哈希的文件的路径和文件名


或者将脚本放入SendTo文件夹(在Windows操作系统中;shell:SendTo)中,以右键单击方式获取该脚本。

立即停止读取该文件;您正在消耗系统上的所有内存。改为读取16MB左右的数据块

data = File.read(16 * 1024 * 1024)
(回应Peter关于还剩下2GB的评论。)

尽管如此,我怀疑伊格纳西奥是对的。尝试用以下内容替换读取/更新行:

while True:
    buf = File.read(0x100000)
    if not buf:
        break
    SHA1Hash.update(buf)

这就是我原来的想法,但是当我检查时,我仍然有+2GB的左边。终端窗口只是在计算哈希的时候立即关闭。值得注意的是:你应该尝试从命令提示符启动你的Python脚本。这样可以获得有关错误的更多信息。@Winston Ewert是的,您是对的,很抱歉,我通常会这样做,尽管这次我犯了错误。另一种方法是从批处理文件运行它,然后在它之后放置
暂停
(听起来您在使用Windows)。感谢您的帮助,您的解决方案工作得很好,这太简单了,我一开始就觉得这篇文章很愚蠢,而我自己却没有弄明白;)当然,如果你真的想让我这么做,这是一个密切的联系,但我认为你的答案是更好的一些可怜的脑死亡程序员谁会谷歌的东西在未来的某个时候,所以我去了。
while True:
    buf = File.read(0x100000)
    if not buf:
        break
    SHA1Hash.update(buf)