String comparison fails

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-17 19:56:28

问题


output = subprocess.check_output("./mount.sh", shell=True)
print output
if output == "expected_String":
      print "Hurray!"

(The print command is just to check if the output is what I expected).The comparison fails everytime and I don't get why. I tried it with this instead of check_output

(stdout, stderr) = Popen(["./mount.sh"], stdout=PIPE).communicate()
mountout = stdout

but I don't think that's the problem here because

 print output

gives me what I expect but if I try to compare it to my "expected_String" it is always false.


回答1:


I believe the problem is your output contains additional new line character at the end. You can fix it by calling .strip() to remove those:

output = subprocess.check_output("./mount.sh", shell=True)
output = output.strip()

Update: How to Find out If a String Ends with New Line?

Consider the following interactive session:

>>> s = '''hello\n'''
>>> s.endswith('\n')
True


来源:https://stackoverflow.com/questions/21667511/string-comparison-fails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!