Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
203 views
in Technique[技术] by (71.8m points)

python - String comparison fails

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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
'''
>>> s.endswith('
')
True

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...