argparse¶
用argparse来更优雅地处理脚本执行参数
1、功能¶
Command-line option and argument parsing library.
2、使用方法¶
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--type', help="请输入加密类型", type=str, default='str')
args = parser.parse_args()
- 先导入模块
- 然后实例化对象
- 接着添加参数规则,支持添加多条规则
- 然后对刚才实例化对象调用parse_args()方法:
小括号内容,依次为:参数别名1,参数别名2,当输入-h时候回写帮助内容,输入内容被转义后的类型(比如上面是str,那么并不是说不能跟随参数-t 1,此时1会被转义为str类型。而当type=int的时候,如果输入-t cisco,则cisco会因为无法转成int类型而提示用法错误。如果是多个参数的情况下,则是转义list中的每个值), 默认值。
打印传入的参数
args.type
上面的参数是type,所以直接对象.参数别名就能获取到参数了
3、一个完整的例子¶
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--type', help="请输入加密类型", type=str, default='str')
parser.add_argument('-c', '--content', help="请输入字符串或路径", type=str, default='huangyisan')
# 对parser调用parse_args()方法
args = parser.parse_args()
print(args)
print(args.type)
print(args.content)
执行结果:
huangyisan:~ $ python3 /Users/huangyisan/Desktop/Python_project/Mage_edu/normal_func/arg.py -t kk -c 'ok'
Namespace(content='ok', type='kk')
kk
ok
huangyisan:~ $ python3 /Users/huangyisan/Desktop/Python_project/Mage_edu/normal_func/arg.py -c 'ok'
Namespace(content='ok', type='str')
str
ok
4、传入多个参数¶
如果需要传入多个参数,比如-t a b c d 则添加nargs参数,并且定义为’+’,并且把default修改成list类型:
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--type', help="请输入加密类型", type=str, default='str')
parser.add_argument('-c', '--content', help="请输入字符串或路径", type=str, default='huangyisan')
parser.add_argument('-p', '--port', help='端口', type=int ,default=[80], nargs='+')
args = parser.parse_args()
print(args)
print(args.type)
print(args.content)
print(args.port)
上面 --port 就是可以捕获到多个参数, nargs=’+’,default用数组形式赋值
执行结果:
huangyisan:~ $ python3 /Users/huangyisan/Desktop/Python_project/Mage_edu/normal_func/arg.py -c 'ok'
Namespace(content='ok', port=[80], type='str')
str
ok
[80]
huangyisan:~ $ python3 /Users/huangyisan/Desktop/Python_project/Mage_edu/normal_func/arg.py -c 'ok' -p 80 8080 90
Namespace(content='ok', port=[80, 8080, 90], type='str')
str
ok
[80, 8080, 90]