python - 带有选择选项的条件 argparse
问题描述
以下是我在模块中编写的三个参数。
parser.add_argument('--Type',type=str,choices=['a','b','c'],help='Options include: a,b,c.',required=True)
parser.add_argument('--Input',default=False,help='Generate input files',required=False)
parser.add_argument('--Directory',default=False,help='Secondary directory',required='--Input' in sys.argv)
--Type
可以使用三个选项:a、b、c 。
目前,我已将其设置为,如果 --Directory 为真,则需要 --Input 为真。
但是,我想向 --Directory 添加一个附加条件以要求 --Type 为 == 'c'。
如何更改 --Directory 参数中的必需选项,使其同时需要 --Input 和 --Type == 'c'?
解决方案
将参数解析与您的需求分离。
parser.add_argument('--Type', choices=['a','b','c'], required=True)
parser.add_argument('--Input', action='store_true')
parser.add_argument('--Directory', action='store_true')
args = parser.parse_args()
if args.Directory and args.Type != 'c' and not args.input:
raise argparse.ArgumentError("--Directory requires --Type c and --Input")
(注意action='store_true'
自动设置type=bool
和default=False
。)
推荐阅读
- laravel - Laravel,在关系中使用数据透视表
- c++ - 转换向量地址以复制数据
- node.js - MongoNetworkError:到 [connection_url] 的连接 6 超时
- angular - 如果 RxJS 中的条件为真,我可以跳过所有后续的运算符链吗
- javascript - 如何让 React Native 像媒体播放器一样运行(可能是“前台”)?
- python - 如何将 MKV 字节读取为视频?
- asp.net-core - asp.net 核心认证 AddMicrosoftAccount
- javascript - 根据给定 ID 更新对象的最佳方法
- line - 3d 线段和双线性曲面之间的交点
- flask - 如何让 Apache2 停止拒绝在端口 8080 上提供 Flask(而它在端口 80 上提供服务?)