问题
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