如果语句返回错误的值?

krt*_*tek 2 python string if-statement

ifPython中的语句进行求值,并显示返回非预期值.

p = sub.Popen('md5.exe -n md5.exe',stdout=sub.PIPE,stderr=sub.PIPE)
md5, errors = p.communicate()
print md5
abc = "8D443F2E93A3F0B67F442E4F1D5A4D6D"
print abc
if md5 == abc: print 'TRUE'
else: print 'FALSE'
Run Code Online (Sandbox Code Playgroud)

repr(md5)'8D443F2E93A3F0B67F442E4F1D5A4D6D\r\n'.

2个字符串是相同的,但它评估和打印FALSE.

这里发生了什么,以及如何解决这个问题?

小智 9

md5包含尾随空格,该abc值不具有该值.大多数命令行程序以换行符结束,因为它可能会破坏shell用户不会.可以将其输出到标准错误流,以免干扰像您这样的程序,但通常不会这样做.

您可以使用字符串方法.strip()从字符串的开头和结尾删除所有空格.例如,

md5 = md5.strip()
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Python 3,则可能会导致相同的错误,因为Subprocess对象的.communicate()方法返回的bytes对象不等于任何字符串.