2017-07-13 50 views
0

爲positionals無效參數我想實現導入功能與必需和可選參數,以這種方式運行此:「需要」在Python命令

python manage.py import --mode archive 

在需要--modearchive也。

我正在使用argparse庫。

class Command(BaseCommand): 
    help = 'Import' 

    def add_arguments(self, parser): 
     parser.add_argument('--mode', 
      required=True, 
     ) 
     parser.add_argument('archive', 
      required=True, 
      default=False, 
      help='Make import archive events' 
     ) 

但我recived錯誤:

TypeError: 'required' is an invalid argument for positionals 
+2

'archive'已被**需要,因爲它是一個位置參數。 –

回答

7

您創建了一個位置參數(在名字前面沒有--選項)。位置參數是總是需要。您不能使用required=True這樣的選項,只需刪除required即可。也刪除default;一個必要的參數不能有默認值(其將絕不會還是使用):

parser.add_argument('archive', 
    help='Make import archive events' 
) 

如果你意味着archive是一個命令行開關,使用--archive代替。

2

我認爲--mode archive的解釋是:「模式是檔案」,換句話說archive--mode參數的,而不是一個單獨的參數。如果是這樣,它將不得不是--archive這不是你想要的。

只是省略了archive的定義。