2016-09-07 57 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」