我在 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
有什么想法吗?
尝试:
--label "106466153-Gateway Arch"
--label 106466153-Gateway\Arch
--label "106466153-Gateway\Arch"
--label="106466153-Gateway Arch"
--label 106466153-Gateway\\\Arch
--label 106466153-Gateway\\\\\\\Arch
所有尝试都会产生相同的错误。
我使用的是 Red Hat Enterprise Linux Server 6.4 版(圣地亚哥)。
最佳答案
这是一个糟糕的解决方法:
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"
关于python - args python 解析器,一个空格和 Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39377451/