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

时间:2015-01-26 17:49:09

标签: python string command-line-arguments backslash

我知道在编程中转义反斜杠。但是我将命令行参数传递给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")

1 个答案:

答案 0 :(得分:4)

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

如果您的shell是Bash或其他与Bourne兼容的Unix shell,则解决方法是将反斜杠加倍或将其放在单引号中。 Windows CMD本身就是不同的,令人困惑; Csh加倍。