如果语句返回错误的值?

时间:2011-07-11 21:31:14

标签: python string if-statement

Python中的if语句进行求值,并显示返回非预期值。

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'

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

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

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

1 个答案:

答案 0 :(得分:9)

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

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

md5 = md5.strip()

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