我已经阅读了许多关于这个问题的帮助链接,但没有一个是完全像我的情况,所以我决定张贴在这里。我使用argparse获取一些命令行选项。我的问题是1个标志总是必需的(-m),所以我这样定义它
parser.add_argument('-m','--mode', type=str, required=True , metavar='<add|del|list|delID>', choices=['add', 'del' , 'list', 'delID'])
如您所见,唯一可能接受的参数是'add'、'del'、'list'和delID'
我需要它做的是,如果从参数模式旗帜。这是我目前尝试的,但错误总是被触发
parser = argparse.ArgumentParser(description='Help Desk Calendar Tool')
parser.add_argument('-m','--mode', type=str, required=True , metavar='<add|del|list|delID>', choices=['add', 'del' , 'list', 'delID'])
parser.add_argument('-s', '--start', type=str, required=False, metavar='<Start date in the following format - YYYY-MM-DD>')
parser.add_argument('-e','--end', type=str, required=False, metavar='<End date in the following format - YYYY-MM-DD>')
parser.add_argument('-d','--delete', type=str, required=False, metavar='<Event ID Here>')
args = parser.parse_args()
if args.mode in ('add','del','list'):
print args.mode
if args.start is None or args.end is None:
parser.error('Options add, del and list all require the start (-s) and end (-e) date to be set')
if args.mode in ('delID'):
if args.start is not None or args.end is not None:
parser.error('The option delID can ONLY except the event ID, no other options can be entered')
if args.mode in ('delID'):
if args.delete is None:
parser.error('The delete (-d) option is required when delID mode is selected')
因此,如果我运行command.py -s 2016-02-11 -e 2016-02-16 -m add
,第一个错误条件仍然会被触发。
现在它确实适用于delID条件检查。有什么建议吗?你知道吗
谢谢
更新
看起来上面的方法确实有效。结果发现,在我的定义中有一个额外的错误检查抛出错误
if mode in ('add','del','list'):
parser.error("Options add,del and list all require a start (-s) and end (-e) date!")
谢谢你引起我的注意
完成的工作代码
相关问题 更多 >
编程相关推荐