如何在argparse中以参数名形式传入位置参数?
实现指定参数名的参数传入方式
如果你想通过python3 example.py receiver <argument>的形式传参,也就是必须显式写出参数名receiver再传入对应值,可以用argparse的子命令功能来实现,修改后的代码如下:
import argparse parser = argparse.ArgumentParser() # 创建子命令解析器,指定dest存储子命令名称,同时设置为必填 subparsers = parser.add_subparsers(dest='command', required=True) # 添加名为receiver的子命令,并设置帮助信息 receiver_parser = subparsers.add_parser('receiver', help='传入接收者邮箱') # 给receiver子命令添加邮箱参数 receiver_parser.add_argument('email', help='接收者邮箱地址') args = parser.parse_args() # 获取并使用参数值 if args.command == 'receiver': print(f"接收者邮箱:{args.email}")
调用时直接执行:
python3 example.py receiver xxx@example.com
如果你能接受带--的参数名写法(更符合Python命令行规范),也可以将原位置参数改为必填的可选参数,代码如下:
import argparse parser = argparse.ArgumentParser() # 将receiver设为必填的可选参数 parser.add_argument('--receiver', required=True, help="Enter receiver email ID") args = parser.parse_args() print(f"接收者邮箱:{args.receiver}")
调用方式:
python3 example.py --receiver xxx@example.com
内容的提问来源于stack exchange,提问作者bobs
相关产品推荐
相关产品推荐

