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 ) |
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 ) |
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) |
1 2 3 4 | >>> parser = argparse.ArgumentParser() >>> parser.error(message = 'run error' ) usage: [ - h] : error: run error |
打印完错误信息后脚本就直接退出了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架