带引号的Python argparse参数

时间:2012-10-31 23:00:31

标签: python argparse optparse

有什么办法可以告诉argparse不要吃引号吗?

例如,当我给出带引号的参数时,argparse只将引号内的内容作为参数。我也想捕获引号(不必在命令行上转义它们。)

pbsnodes -x | xmlparse -t "interactive-00"

产生

interactive-00

我想要

"interactive-00"

2 个答案:

答案 0 :(得分:12)

我认为它是吃它们的shell,所以python实际上永远不会看到它们。在命令行中转义它们可能是您唯一的选择。

如果由于某些原因你不喜欢\"backslash\"风格转义,那么这种方式应该有效:

pbsnodes -x | xmlparse -t '"interactive-00"'

答案 1 :(得分:0)

命令行由python进程本身解析为参数向量。根据python的构建方式,可以通过某种运行时库来完成。对于Windows构建,这很可能是MS Visual C ++运行时库。有关如何解析命令行的更多详细信息,请参见Visual C ++文档:Parsing C++ command-Line arguments

尤其是:

  • 由双引号引起的字符串(“字符串”)被解释为单个参数,而不管其中包含的空格如何。可以将带引号的字符串嵌入参数中。

  • 将双引号加反斜杠(\“)解释为文字双引号字符(”)。

如果要查看未处理的命令行,请在Windows上执行以下操作:

import win32api
print(win32api.GetCommandLine())