我遇到了subprocess.call()python问题

问题描述 投票:0回答:1

早安,

我编写了一个脚本,可以帮助我比较应用程序的md5哈希(是否正式)。如您所知,当您访问App官方网站时,您会看到一个供应用程序使用的官方md5哈希值,以将其与其他副本进行比较。

我的问题是,即使md5哈希相同,我的脚本测试也总是给我NOT OFFICIAL

这是我的代码

    import subprocess

Hash = str.strip(input())
print(Hash)

Dir = str.strip(input())
print(Dir)

output = subprocess.check_output("md5 " + Dir, shell=True)
print(output)

if Hash == output:
    print("OFFICIAL")

else:
    print("NOT OFFICIAL")

输出为:

b'MD5 (/Users/username/Desktop/test.py) =
86ece1d78b65fdb40058a3514d90df9d\n' NOT OFFICIAL

我的代码有问题吗?

谢谢..

python subprocess
1个回答
0
投票

您需要decode()才能将outputbytes转换为str。此外,您还需要strip()它,因为否则您将比较带有换行符的字符串与没有换行符的字符串。


注意:您可以使用标准的hashlib模块来代替生成进程。

注2:如果可能,应使用其他较新的哈希。

© www.soinside.com 2019 - 2024. All rights reserved.