可以使用argparse模块的add_argument()函数中的type参数来指定一个正则表达式作为参数的类型。
以下是一个示例代码:
import argparse
import re
def regex_type(pattern):
def regex(value):
if not re.match(pattern, value):
raise argparse.ArgumentTypeError(f'Invalid value: {value}')
return value
return regex
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file', type=regex_type(r'\w+\.txt'), help='Input file in txt format')
parser.add_argument('-n', '--number', type=regex_type(r'\d+'), help='Positive integer number')
args = parser.parse_args()
if args.file:
print(f'Input file: {args.file}')
if args.number:
print(f'Number: {args.number}')
if __name__ == '__main__':
main()
在上述代码中,我们定义了一个regex_type函数,它接受一个正则表达式模式作为参数,并返回一个自定义的类型函数regex。这个regex函数用于检查参数值是否与正则表达式匹配,如果不匹配则抛出ArgumentTypeError异常。
然后,我们在add_argument()函数中使用type参数来指定参数的类型为regex_type函数,传入相应的正则表达式模式。这样,在解析命令行参数时,argparse会自动调用regex函数来验证参数值是否符合正则表达式。
在main函数中,我们通过args.file和args.number来访问传入的参数值,并进行相应的处理。