Python命令模塊argparse學習筆記(四)


  • 默認參數

ArgumentParser.set_defaults(**kwargs)

set_defaults()可以設置一些參數的默認值

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('foo', type=int)
>>> parser.set_defaults(bar=123, baz='test')
>>> parser.parse_args(['456'])
Namespace(bar=123, baz='test', foo=456)

解析器級別的默認值會覆蓋參數級別的默認值

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', default='bar')
>>> parser.set_defaults(foo='test')
>>> parser.parse_args([])
Namespace(foo='test')

get_defaults()方法可以獲取add_argument()和set_defaults()中設置的默認值

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', default='bar')
>>> parser.set_defaults(air='test')
>>> parser.get_default('air')
'test'
>>> parser.get_default('foo')
'bar'
  • 參數部分使用

如果腳本只使用所傳參數中的幾個參數,要把其他的參數傳給其他腳本,可以使用parse_known_args()方法

ArgumentParser.parse_known_args(args=None, namespace=None)

它的工作方式與parse_args()非常相似,只是在出現額外的參數時不會產生錯誤,而是返回一個包含填充名稱空間和剩余參數字符串的元組和列表

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('bar')
parser.add_argument('-t','--thread')
args = parser.parse_known_args()
if args:
   print(args)

運行結果

前綴匹配規則適用於parse_known_args()

  • 打印幫助

ArgumentParser.parse_args()
格式化和打印任何使用或錯誤消息
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('bar')
>>> parser.parse_args()
usage: [-h] bar
: error: the following arguments are required: bar

還有幾種格式化的方法

ArgumentParser.print_usage(file=None)
打印一個關於如何在命令行上調用ArgumentParser的簡要說明
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.print_usage()
usage: [-h] [--foo FOO]

如果文件是None,則為sys.stdout

ArgumentParser.print_help(file=None)
打印幫助信息,包括程序使用方法和有關使用ArgumentParser的參數信息
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.print_help()
usage: [-h] [--foo FOO]

optional arguments:
  -h, --help  show this help message and exit
  --foo FOO

如果文件是None,則為sys.stdout

ArgumentParser.format_usage()

返回一個字符串,而不是打印,其中包含如何在命令行上調用ArgumentParser的簡要說明

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.format_usage()
'usage: [-h] [--foo FOO]\n'
還有一個也是返回字符串的方法

ArgumentParser.format_help()

返回一個包含幫助信息的字符串,包括程序用法以及有關使用ArgumentParser的參數信息

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.format_help()
'usage: [-h] [--foo FOO]\n\noptional arguments:\n  -h, --help  show this help message and exit\n  --foo FOO\n'
  • 退出方法

ArgumentParser.exit(status=0, message=None)
此方法終止程序,以指定狀態退出,如果給定,則在此之前打印消息
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.exit(message='test')
test

然后腳本就直接退出了

ArgumentParser.error(message)
此方法將包含消息的使用消息打印到標准錯誤,並終止狀態碼為2的程序
>>> parser = argparse.ArgumentParser()
>>> parser.error(message='run error')
usage: [-h]
: error: run error

打印完錯誤信息后腳本就直接退出了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM