11

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

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

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

生产

interactive-00

我想

"interactive-00"
4

2 回答 2

15

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

如果它是\"backslash\"由于某种原因不喜欢你不喜欢的风格,那么这种方式应该可以代替:

pbsnodes -x | xmlparse -t '"interactive-00"'
于 2012-10-31T23:01:55.387 回答
1

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

尤其:

  • 由双引号 ("string") 包围的字符串被解释为单个参数,无论其中包含什么空格。带引号的字符串可以嵌入到参数中。

  • 前面有反斜杠 (\") 的双引号被解释为文字双引号字符 (")。

如果你想查看未处理的命令行,在 Windows 上你可以这样做:

import win32api
print(win32api.GetCommandLine())
于 2020-01-22T12:31:34.463 回答