args python解析器,空格和Spark

时间:2016-09-07 19:10:07

标签: python linux apache-spark io redhat

我在foo.py中有这段代码:

from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('--label', dest='label', type=str, default=None, required=True, help='label')
args = parser.parse_args()

当我执行时:

  

spark-submit --master yarn --deploy-mode cluster foo.py --label 106466153-Gateway Arch

我在Stdout收到此错误:

usage: foo.py [-h] --label LABEL
foo.py: error: unrecognized arguments: Arch

请问任何想法?

尝试:

  1. --label "106466153-Gateway Arch"
  2. --label 106466153-Gateway\ Arch
  3. --label "106466153-Gateway\ Arch"
  4. --label="106466153-Gateway Arch"
  5. --label 106466153-Gateway\\\ Arch
  6. --label 106466153-Gateway\\\\\\\ Arch
  7. 所有尝试都会产生相同的错误。

    我正在使用红帽企业Linux服务器版本6.4(圣地亚哥)。

1 个答案:

答案 0 :(得分:0)

这是一个讨厌的解决方法:

from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('--label', dest='label', type=str, default=None, required=True, help='label', nargs="+")
args = parser.parse_args()
args = ' '.join(args.label)
print args

我使用nargs="+"然后使用join参数。

我这样执行:

  

spark-submit --master yarn --deploy-mode cluster foo.py --label" 106466153-Gateway Arch"

另请注意,当没有空格时,此方法可以正常工作,如下所示:

  

spark-submit --master yarn --deploy-mode cluster foo.py --label" 106466153-GatewayNoSpaceArch"