2
votes
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
it seems that subprocess module don't have a function named check_output, is it defined by yourself? If so, please show the code. - Charles0429
@Charles0429 it's Python2.7 - not in Python2.6 or earlier. - icedtrees

1 Answers

5
votes

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