有什么办法可以告诉argparse不要吃引号吗?
例如,当我给出带引号的参数时,argparse只将引号内的内容作为参数。我也想捕获引号(不必在命令行上转义它们。)
pbsnodes -x | xmlparse -t "interactive-00"
产生
interactive-00
我想要
"interactive-00"
答案 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())