第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Argparse可選的位置參數(shù)?

Argparse可選的位置參數(shù)?

胡子哥哥 2019-12-07 15:57:08
我有一個腳本,打算像這樣使用: usage: installer.py dir [-h] [-v]dir 是一個位置參數(shù),其定義如下:parser.add_argument('dir', default=os.getcwd())我希望dir可以是可選的:未指定時,它應該只是cwd。不幸的是,當我不指定dir參數(shù)時,我得到了Error: Too few arguments。
查看完整描述

3 回答

?
largeQ

TA貢獻2039條經(jīng)驗 獲得超8個贊

使用nargs='?'(或nargs='*' 如果您需要多個目錄)


parser.add_argument('dir', nargs='?', default=os.getcwd())

擴展示例:


>>> import os, argparse

>>> parser = argparse.ArgumentParser()

>>> parser.add_argument('-v', action='store_true')

_StoreTrueAction(option_strings=['-v'], dest='v', nargs=0, const=True, default=False, type=None, choices=None, help=None, metavar=None)

>>> parser.add_argument('dir', nargs='?', default=os.getcwd())

_StoreAction(option_strings=[], dest='dir', nargs='?', const=None, default='/home/vinay', type=None, choices=None, help=None, metavar=None)

>>> parser.parse_args('somedir -v'.split())

Namespace(dir='somedir', v=True)

>>> parser.parse_args('-v'.split())

Namespace(dir='/home/vinay', v=True)

>>> parser.parse_args(''.split())

Namespace(dir='/home/vinay', v=False)

>>> parser.parse_args(['somedir'])

Namespace(dir='somedir', v=False)

>>> parser.parse_args('somedir -h -v'.split())

usage: [-h] [-v] [dir]


positional arguments:

  dir


optional arguments:

  -h, --help  show this help message and exit

  -v


查看完整回答
反對 回復 2019-12-07
?
婷婷同學_

TA貢獻1844條經(jīng)驗 獲得超8個贊

作為@VinaySajip答案的擴展。還有其他nargs值得一提的。


parser.add_argument('dir', nargs=1, default=os.getcwd())

N(整數(shù))。命令行中的N個參數(shù)將一起收集到一個列表中


parser.add_argument('dir', nargs='*', default=os.getcwd())

'*'。存在的所有命令行參數(shù)都收集到一個列表中。請注意,使用多個位置參數(shù)通常沒有多大意義nargs='*',但可以使用多個可選參數(shù)nargs='*'。


parser.add_argument('dir', nargs='+', default=os.getcwd())

'+'。就像'*'一樣,所有存在的命令行參數(shù)都被收集到一個列表中。此外,如果沒有至少一個命令行參數(shù),則會生成一條錯誤消息。


parser.add_argument('dir', nargs=argparse.REMAINDER, default=os.getcwd())

argparse.REMAINDER。所有其余的命令行參數(shù)都收集到一個列表中。這對于分派到其他命令行實用工具的命令行實用工具通常很有用


如果nargs未提供關鍵字參數(shù),則消耗的參數(shù)數(shù)量由操作確定。通常,這意味著將使用單個命令行參數(shù),并且將生成單個項目(而不是列表)。


編輯(從@Acumenus的注釋復制) nargs='?' 文檔說:“?”。如果可能,將從命令行使用一個參數(shù),并將其作為單個項目產(chǎn)生。如果不存在命令行參數(shù),則將生成默認值。


查看完整回答
反對 回復 2019-12-07
?
飲歌長嘯

TA貢獻1951條經(jīng)驗 獲得超3個贊

parser.add_argument還需要一個開關。您可以使用required=False。這是Python 2.7的樣本片段:


parser = argparse.ArgumentParser(description='get dir')

parser.add_argument('--dir', type=str, help='dir', default=os.getcwd(), required=False)

args = parser.parse_args()


查看完整回答
反對 回復 2019-12-07
  • 3 回答
  • 0 關注
  • 941 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號