【发布时间】:2022-06-11 01:09:59
【问题描述】:
下面是一个使用argparse的示例代码
import os
import numpy
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-C','--Chk',type=str, help='Choose arg')
parser.add_argument('-R','--ReC',type=str, help='Choose arg')
args = vars(parser.parse_args())
if args['Chk'] == 'compo1':
print('This is comp1')
elif args['Chk'] == 'compo2':
print('This is comp2')
else:
print('The specified comp does not exist')
if args['ReC'] == 'recompo':
print('This is second test')
else:
print('The specified second_T does not exist')
if __name__=='__main__':
main()
上面的代码工作正常。既然都是optional arguments,我想有两个特点:
- 如果给出了无效的参数,对于
-C或-R,我想打印/提出一条消息。我尝试使用raise argparse.ArgumentTypeError,见下文。
if len(args) > 8 or len(args) < 3:
raise argparse.ArgumentTypeError('Print this error message')
return
- 其次,如果没有给出
-C或-R中的任何一个,我希望代码不应该执行任何操作。在上面的代码中,如果在任何一种情况下都没有给出参数,它会打印The specified comp does not exist,这并不理想。
有没有更好的方法来完成上述任务?谢谢
【问题讨论】:
-
args是一个dict有 2 个项目。len测试有什么用? -
@hpaulj 如果在执行过程中给出的字符串错误,我想打印一条消息。因此,考虑使用
len(str)长度作为标准。应该是len(args['Chk']) -
如果有一小部分允许的字符串,您可以使用
choices。type函数也可用于测试允许值。
标签: python conditional-statements argparse