我不知道如何在Python3中从sha256校验和中取出文件名

2024-09-24 00:33:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我仍然是一个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()以各种方式消除它,但当我运行代码时,它仍然存在,我还尝试将文件路径添加到第一次校验和结束时作为测试,但这也不会将文件路径添加到它的末尾。 我确实知道校验和匹配的事实

如果您知道有什么不对劲,我们将不胜感激


Tags: 文件代码路径input校验splitsubprocessprint
1条回答
网友
1楼 · 发布于 2024-09-24 00:33:53

从文档中,subprocess.call执行:使用参数运行命令。等待命令完成或超时,然后返回returncode属性您可以在pythonshell中通过输入help(subprocess.call)或查看https://docs.python.org并搜索subprocess模块来验证这一点

您的代码将整数返回码转换为字符串,而不是校验和。在捕获进程stdout的子进程中还有其他调用,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!!!")

相关问题 更多 >