忽略 sys.argv 中 '\n' 字符的计算

Ignore evaluation of '\n' character in sys.argv

奇怪的是,当运行这个程序的参数为

program.py "(lp0\nS'cat'\np1\naI5\na."

program.py 为:

import sys,pickle
print sys.argv[1]=="(lp0\nS'cat'\np1\naI5\na."

False 被打印...我已经将评估的差异缩小到 \n 字符但是我找不到忽略这样的方法。

为什么会这样,我该如何解决?

您需要像这样使用原始字符串文字

sys.argv[1] == r"(lp0\nS'cat'\np1\naI5\na."

此外,您可以在参数中使用不带引号的字符串。

因为Python和shell(推测是Bash)的字符串语法不同

您可能希望运行将程序作为

echo       $'"(lp0\nS\'cat\'\np1\naI5\na.'
program.py $'"(lp0\nS\'cat\'\np1\naI5\na.'