1

我在 python 中使用 OptionParser 时遇到问题。当我将 '&' 作为输入中的字符之一时,它将丢弃 '&' 并将其旁边的字符视为单独的命令。下面是 test.py 的示例代码:

  from optparse import OptionParser
  cmdParser = OptionParser()
  cmdParse.add_option("-n", "--USER", help="User Name")
  cmdParse.add_option("-p", "--PASSWORD", help="Password")
  (options, args) = cmdparser.parse_args()
  uname = options.USER
  pwd = options.PASSWORD

当我使用命令运行它时:python test.py -n sample -p 123&45 password 它只读取 123 并且说 45 未被识别为内部和外部命令错误。除“&”外,所有其他特殊符号都可以正常工作。如果我给-p "123&45"它工作正常。但我不想明确指定字符串。OptionParser 有限制吗?任何帮助都是可观的。

提前致谢。

4

1 回答 1

2

这不是问题optparse- 您的程序永远不会看到除&符号之外的任何内容,因为它是由您的 shell 解释的。“&”在许多 shell 中用于在后台启动命令。所以你的命令行被解释为“python test.py -n sample -p 123在后台运行然后运行命令45”,解释你的错误。正如您已经发现的那样,解决方案是引用您的选项。这是 shell 的一个限制,您在 Python 中所做的任何事情都无法解决,因为程序永远不会看到整个选项。

PS:你不应该再使用optparse——而是使用argparse.

于 2014-01-09T09:06:46.757 回答