2016-09-07 5 views
2

スパーク私はfoo.pyでこのコードを持っている:引数Pythonのパーサ、空白や

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

とIは、実行:

--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

すべての試みで同じエラーが発生します。


私はRed Hat Enterprise Linux Serverリリース6.4(サンティアゴ)を使用しています。私はnargs="+"、その後join引数を使用しています

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 

:ここ

+0

引用符:launch_the_spark_script ... features.py --label "106466153 - ゲートウェイアーチ"。私が知っているほとんどのシェルは、引用されたものを基底のプロセス(この場合は 'python')に特異な引数として渡します。 – mgilson

+0

実際に動作する最小の例を使用します。 'help'引数が終了していない文字列であるため、あなたのコードは無効なpythonです。 – Anthon

+1

[tag:python]は@Anthonだけうまく動作しますが、[tag:Spark]が干渉するものがあります。 – gsamaras

答えて

0

は厄介な回避策です。私はこのような実行

火花提出--master糸--deployモードのクラスタfoo.py --label "106466153-ゲートウェイアーチ"

はまた、このことに気付きます

火花提出--master糸--deployモードのクラスタfoo.py --label "106466153-GatewayNoSpaceArch"

:にスペースが存在しない場合のアプローチは、このように、作業することができます210