OptionParser不会使用&符号&'

时间:2014-01-09 09:00:43

标签: python-2.7 optionparser

我在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 密码只读取123而且说45不被识别为内部和外部命令错误。除“&”外,所有其他特殊符号都能正常工作。 如果我给 -p“123& 45”,它可以正常工作。但我不想明确指定字符串。 是OptionParser的限制吗? 任何帮助都很明显。

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

PS:你shouldn't be using optparse anymore - 而是使用argparse