在 Python 中将反斜杠作为命令行参数处理

Dealing with backslash as a command line argument in Python

我知道在编程中转义反斜杠。但是,我将命令行参数传递给 Python 程序进行解析。空格无关紧要,但是通过命令行,空格很重要。所以我试图将除第一个元素之外的所有 argv[] 参数连接成一个字符串,然后进行解析。但是,在 for 循环中永远不会遇到单个 '\' 的标记。

命令行参数(注意“\”周围的空格):

((1 * 2) + (3 - (4 \ 5)))

节目:

import sys
string = ""
for token in sys.argv[1:len(sys.argv)]:
    print(token)
    if "\" in r"%r" % token:
        print("Token with \ found")
    string += token
print(string)
print("done")

这不是 Python 问题。 shell 将解释您在命令行中编写的文本并(对于典型的 Unix shells)执行反斜杠替换。所以当 Python 检查命令行时,反斜杠已经被替换掉了。

如果您的 shell 是 Bash 或其他一些与 Bourne 兼容的 Unix shell,则解决方法是加倍反斜杠或将其放在单引号中。 Windows CMD 本身就不同且令人眼花缭乱; csh加倍这样。