有什么办法可以告诉 argparse 不要吃引号?
例如,当我给出带引号的参数时,argparse 仅将引号内的内容作为参数。我也想捕获引号(不必在命令行上转义它们。)
pbsnodes -x | xmlparse -t "interactive-00"
生产
interactive-00
我想
"interactive-00"
我认为是壳吃掉了它们,所以蟒蛇实际上永远不会看到它们。在命令行上转义它们可能是您唯一的选择。
如果它是\"backslash\"
由于某种原因不喜欢你不喜欢的风格,那么这种方式应该可以代替:
pbsnodes -x | xmlparse -t '"interactive-00"'
命令行由 python 进程本身解析为参数向量。根据 python 的构建方式,这将由某种运行时库完成。对于 Windows 构建,这很可能是 MS Visual C++ 运行时库。有关它如何解析命令行的更多详细信息,请参阅 Visual C++ 文档:解析 C++ 命令行参数。
尤其:
由双引号 ("string") 包围的字符串被解释为单个参数,无论其中包含什么空格。带引号的字符串可以嵌入到参数中。
前面有反斜杠 (\") 的双引号被解释为文字双引号字符 (")。
如果你想查看未处理的命令行,在 Windows 上你可以这样做:
import win32api
print(win32api.GetCommandLine())