我不确定如何从 Python 3 中的 sha256 校验和中取出文件名

Im not sure how to take filename out of sha256 checksum in Python 3

我仍然是一个 Python 菜鸟,但我想与其手动检查校验和,不如编写一个快速程序,这样无论何时我必须这样做(也作为练习)都会花费更少的时间,所以我写了这个(请原谅我的代码中多余的无用行和错误的命名,我试图查明我做错了什么。)

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 执行:运行 带有参数的命令。等待命令完成或超时,然后 return returncode 属性。 您可以通过输入 [=12= 在 python shell 中验证这一点] 或查看 https://docs.python.org 并搜索 subprocess 模块。

您的代码将整数 return 代码转换为字符串,而不是校验和。 subprocess 中还有其他调用捕获进程 stdout,这是 sha256sum 发送其校验和的地方。 Stdout 是一个 bytes 对象,需要解码为字符串。

import subprocess

FileLocation = input("Enter File Location: ")

Garbage1 = str(input("Enter First Checksum: "))

Garbage2 = subprocess.check_output(['sha256sum', FileLocation]).decode()

Garbage3 = Garbage2.split(None, 1)

if Garbage1 == Garbage3[0]:
    print("all good")
else:
    print("Still Not Working!!!")