公众号:尤而小屋
作者:Peter
编辑:Peter
argparse是用来解析命令行参数的Python库。当我们在代码中自定义了参数,使用该库能够自动解析出来。
![](http://mmbiz.qpic.cn/sz_mmbiz_jpg/QeT5ql1LaZtnTX4OFJhE6AwWu3O8JH0NtXz8O1HIjHLVBdK2a9Z7f7Ithn1NSL6h407Pd0wTvXkAeAWlYCZlLQ/640?wx_fmt=jpeg)
未使用argparse
比如我们现在想通过一个函数来实现打印某个人的个人信息。如果不使用argparse,我们可以这样写:
def main():
name = input("input your name: ")
age = input("input your age: ")
height = input("input your height: ")
print(f"My name is {name}, {age} years old and I'm {height}.")
return None
if __name__ == "__main__":
main()
后面你在运行的时候需要每次输入不同的数据来运行这个功能:
![](http://mmbiz.qpic.cn/sz_mmbiz_jpg/QeT5ql1LaZtnTX4OFJhE6AwWu3O8JH0NcHcWvxfqucJHjLsu2qCAkOH5dvz4DuJTG279bVoZI9F2JUcdbXt2DQ/640?wx_fmt=jpeg)
使用argparse
![](http://mmbiz.qpic.cn/sz_mmbiz_jpg/QeT5ql1LaZtnTX4OFJhE6AwWu3O8JH0NpqwA4kGLk23MjbibKTkYG58BDicRPHBGDMfia59picwicmSf1rQYm7dKQyw/640?wx_fmt=jpeg)
import argparse
def main():
# 创建参数
parser = argparse.ArgumentParser(description="Argparses使用说明") # 调用ArgumentParser类,并添加描述说明
parser.add_argument('-n','--name',default="Peter") # 添加不同的参数 -n表示参数的简写 --name表示全称 default后面跟的是默认值
parser.add_argument('-y', '--year',default="18")
parser.add_argument('-t','--height',default='175')
# 实例化一个parser对象
args = parser.parse_args()
# 从实例化对象中调用不同的参数
name = args.name
year = args.year
height = args.height
# 使用参数执行print
print(f'My name is {name},{year} years old. I am {height}')
if __name__ == '__main__':
main()
保存成test.py文件。
1、在终端中直接运行语句,不带任何参数:运行结果就是默认值
![](http://mmbiz.qpic.cn/sz_mmbiz_jpg/QeT5ql1LaZtnTX4OFJhE6AwWu3O8JH0NOiaibOMJh4ibLz9iaeao1iaAGlq0WPXonAftwRuAibZztibqTME2lW9605cPA/640?wx_fmt=jpeg)
2、带上参数执行:可以是全称也可以是简写
![](http://mmbiz.qpic.cn/sz_mmbiz_jpg/QeT5ql1LaZtnTX4OFJhE6AwWu3O8JH0NZHSo80ya971HTibU3N3go1OZBZpyhbiaBdib5aJEm6zMMVibAayeUXsExg/640?wx_fmt=jpeg)
3、通过内置的-h还可以查看参数信息:
![](http://mmbiz.qpic.cn/sz_mmbiz_jpg/QeT5ql1LaZtnTX4OFJhE6AwWu3O8JH0NFHpDRKbUic8icLI7ZoC6c5WbibEkMMNTnicZPkN0mht6qypibxckPygjabg/640?wx_fmt=jpeg)
更多详细资料参考官网:https://docs.python.org/3/library/argparse.html
欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961)
![](http://mmbiz.qpic.cn/sz_mmbiz_png/87HjJEl4c1sXLsJ0zS57hGN7xESDDp4icO2azEl4n1CIw9PGu9ZjdEzqBaEE6lFmla0qmkLls3nhmOr7RbibpYQw/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp)