有没有办法告诉argparse不要吞噬引号?
例如,当我给出带引号的参数时,argparse只将引号内部的内容作为参数。 我想要捕获引号本身(而无需在命令行上转义它们)。
pbsnodes -x | xmlparse -t "interactive-00"
生成
interactive-00
I want
"interactive-00"
我认为是shell吃掉了它们,因此Python实际上永远看不到它们。在命令行中转义它们可能是您唯一的选择。
如果您不喜欢“反斜杠”
样式的转义,那么可以使用以下方法代替:
pbsnodes -x | xmlparse -t '"interactive-00"'
Python进程本身将命令行解析为参数向量。根据Python的构建方式,这将由某种运行时库完成。对于Windows版本,最可能使用的是MS Visual C++运行时库。有关它如何解析命令行的更多详细信息可以在Visual C++文档中找到:解析C++命令行参数。
特别地:
用双引号("string")括起来的字符串将被解释为单个参数,无论其中包含的空格如何。一个带引号的字符串可以嵌入到一个参数中。
由反斜杠(\)前缀的双引号(\")将被解释为字面上的双引号字符(")。
如果您想查看未处理的命令行,在Windows上可以这样做:
import win32api
print(win32api.GetCommandLine())
'"TEXT"'