通过一个完整的示例来展示如何使用自定义的帮助信息来输出特定参数的帮助内容。这个示例将包括一个脚本,该脚本接受一个特殊参数 --show-help-for
,用于显示指定参数的帮助信息。
示例脚本:my_program.py
import argparse
def main():
# 创建解析器
parser = argparse.ArgumentParser(description='示例程序')
# 添加参数
parser.add_argument('--foo', dest='foo_value', type=int, default=42, help='foo参数的帮助信息')
parser.add_argument('--bar', type=str, help='bar参数的帮助信息')
parser.add_argument('--show-help-for', metavar='PARAMETER', help='显示特定参数的帮助信息')
# 解析命令行参数
args = parser.parse_args()
# 如果提供了 --show-help-for 参数,则显示特定参数的帮助信息
if args.show_help_for:
# 获取特定参数的帮助信息
for action in parser._actions:
if action.dest == args.show_help_for.replace('-', '') or action.option_strings == [args.show_help_for]:
print(f"帮助信息 for {args.show_help_for}: {action.help}")
return
print(f"参数 {args.show_help_for} 不存在。")
else:
# 否则,显示所有参数的帮助信息
parser.print_help()
if __name__ == "__main__":
main()
运行示例
-
显示所有参数的帮助信息:
python my_program.py --help
输出:
用法:my_program.py [OPTIONS] 示例程序 选项: --foo INTEGER foo参数的帮助信息 --bar TEXT bar参数的帮助信息 --show-help-for PARAMETER 显示特定参数的帮助信息 帮助选项: -h, --help 显示此帮助消息并退出
-
显示特定参数(例如
--foo
)的帮助信息:python my_program.py --show-help-for --foo
输出:
帮助信息 for --foo: foo参数的帮助信息
-
尝试显示不存在的参数的帮助信息:
python my_program.py --show-help-for --baz
输出:
参数 --baz 不存在。
这个示例展示了如何根据用户输入的参数名称来显示特定参数的帮助信息。如果用户没有指定 --show-help-for
参数,程序将显示所有参数的帮助信息。如果用户指定了一个不存在的参数名称,程序将输出一个错误消息。
如何在查询帮助信息的同时输出查询参数的值
在 argparse
自动生成的帮助信息中,默认值通常是会显示的,但是当我们使用 print(f"帮助信息 for {args.show_help_for}: {action.help}")
这样的代码手动打印帮助信息时,我们只获取了参数的 help
属性,而没有包括默认值。
为了在自定义的帮助信息中包含默认值,我们需要手动添加这个信息。我们可以通过检查参数是否有 default
值,并将其添加到帮助信息中。
以下是修改后的代码,它将在帮助信息中包含默认值(如果有的话):
import argparse
def main():
# 创建解析器
parser = argparse.ArgumentParser(description='示例程序')
# 添加参数
parser.add_argument('--foo', dest='foo_value', type=int, default=42, help='foo参数的帮助信息')
parser.add_argument('--bar', type=str, help='bar参数的帮助信息')
parser.add_argument('--show-help-for', metavar='PARAMETER', help='显示特定参数的帮助信息')
# 解析命令行参数
args = parser.parse_args()
# 如果提供了 --show-help-for 参数,则显示特定参数的帮助信息
if args.show_help-for:
# 获取特定参数的帮助信息
for action in parser._actions:
if action.dest == args.show_help_for.replace('-', '') or action.option_strings == [args.show_help_for]:
# 获取帮助信息和默认值
help_text = action.help
default_text = f" (默认值: {action.default})" if action.default is not argparse.SUPPRESS else ""
print(f"帮助信息 for {args.show_help_for}: {help_text}{default_text}")
return
print(f"参数 {args.show_help_for} 不存在。")
else:
# 否则,显示所有参数的帮助信息
parser.print_help()
if __name__ == "__main__":
main()
在这个修改后的代码中,我们检查每个参数的 default
值,并将其添加到帮助信息中。如果参数没有默认值,或者默认值是 argparse.SUPPRESS
(意味着不应该显示默认值),那么我们就不添加默认值信息。
现在,当我们运行以下命令时:
python my_program.py --show-help-for --foo
输出将会是:
帮助信息 for --foo: foo参数的帮助信息 (默认值: 42)
这样,我们就在自定义的帮助信息中包含了默认值。