我仍然是一个Python noob,但我想,与其手动检查校验和,不如编写一个快速的程序,这样无论何时我必须这样做(也作为练习)都会花费更少的时间,所以我写了这篇文章(请原谅代码中多余的无用行和糟糕的命名,我试图找出我做错了什么。)
import subprocess
FileLocation = input("Enter File Location: ")
Garbage1 = str(input("Enter First Checksum: "))
Garbage2 = str(subprocess.call(['sha256sum', FileLocation]))
Garbage3 = Garbage2.split(None, 1)
if Garbage1 == Garbage3[0]:
print("all good")
else:
print("Still Not Working!!!")
当我运行这段代码时,由于Linux命令,它一直在第二次校验和结束时保留文件路径,但我尝试使用.split()以各种方式消除它,但当我运行代码时,它仍然存在,我还尝试将文件路径添加到第一次校验和结束时作为测试,但这也不会将文件路径添加到它的末尾。 我确实知道校验和匹配的事实
如果您知道有什么不对劲,我们将不胜感激
从文档中,
subprocess.call
执行:使用参数运行命令。等待命令完成或超时,然后返回returncode属性您可以在pythonshell中通过输入help(subprocess.call)
或查看https://docs.python.org并搜索subprocess
模块来验证这一点您的代码将整数返回码转换为字符串,而不是校验和。在捕获进程stdout的子进程中还有其他调用,stdout是
sha256sum
发送校验和的地方。Stdout是需要解码为字符串的bytes
对象相关问题 更多 >
编程相关推荐