Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
198 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 Reply

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...