我对subprocess.call()python有问题

时间:2020-05-22 09:54:13

标签: python subprocess

美好的一天,

我制作了一个脚本,可以帮助我比较应用程序的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

我的代码有问题吗?

谢谢..

1 个答案:

答案 0 :(得分:0)

您需要decode()才能将outputbytes转换为str。此外,您还需要strip(),因为否则您将比较带有换行符的字符串与没有换行符的字符串。最后,您可能需要解析输出以删除md5实用程序在哈希旁边打印的内容(如果有的话)。


注意:代替生成进程,更好的解决方案是使用标准的hashlib模块,这也将使您的脚本可移植,更简单,更快速。

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