Python命令模块argparse学习笔记(四)

  • 默认参数

1
ArgumentParser.set_defaults(**kwargs)

set_defaults()可以设置一些参数的默认值

1
2
3
4
5
>>> 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)

解析器级别的默认值会覆盖参数级别的默认值

1
2
3
4
5
>>> 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()中设置的默认值

1
2
3
4
5
6
7
>>> 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()方法

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

它的工作方式与parse_args()非常相似,只是在出现额外的参数时不会产生错误,而是返回一个包含填充名称空间和剩余参数字符串的元组和列表

1
2
3
4
5
6
7
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()

  • 打印帮助

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

还有几种格式化的方法

1
ArgumentParser.print_usage(file=None)
打印一个关于如何在命令行上调用ArgumentParser的简要说明
1
2
3
4
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.print_usage()
usage: [-h] [--foo FOO]

如果文件是None,则为sys.stdout

1
ArgumentParser.print_help(file=None)
打印帮助信息,包括程序使用方法和有关使用ArgumentParser的参数信息
1
2
3
4
5
6
7
8
>>> 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

1
ArgumentParser.format_usage()

返回一个字符串,而不是打印,其中包含如何在命令行上调用ArgumentParser的简要说明

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

1
ArgumentParser.format_help()

返回一个包含帮助信息的字符串,包括程序用法以及有关使用ArgumentParser的参数信息

1
2
3
4
>>> 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'
  • 退出方法

1
ArgumentParser.exit(status=0, message=None)
此方法终止程序,以指定状态退出,如果给定,则在此之前打印消息
1
2
3
4
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.exit(message='test')
test

然后脚本就直接退出了

1
ArgumentParser.error(message)
此方法将包含消息的使用消息打印到标准错误,并终止状态码为2的程序
1
2
3
4
>>> parser = argparse.ArgumentParser()
>>> parser.error(message='run error')
usage: [-h]
: error: run error

打印完错误信息后脚本就直接退出了

posted @   Sch01aR#  阅读(7588)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示