2016-09-07 13 views
2

我有这样的代码在foo.pyARGS蟒蛇分析器,一个空格和星火

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

,当我执行:

火花提交--master纱--deploy模式集群FOO的.py --label 106466153,拱门

我在标准输出得到这个错误:

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

所有尝试都会产生相同的错误。


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

+0

引用它:'launch_the_spark_script ... features.py --label“106466153-Gateway Arch”'。我知道的大多数shell将把引用的东西作为底层进程的单数参数传递(在这种情况下为'python') – mgilson

+0

使用一个实际工作最小的示例。你的代码是无效的Python,因为你的'help'参数是非终止字符串。 – Anthon

+1

[tag:python]会工作得很好@Anthon,有一些干扰的[tag:Spark]。更新 – gsamaras

回答

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的参数。

我执行这样的:

火花提交--master纱--deploy模式集群foo.py --label “106466153-拱门”

还要注意的是这个当不存在空间方法能够工作,像这样:

火花提交--master纱--deploy模式集群foo.py --label “106466153-GatewayNoSpaceArch”