轻松编写命令行接口,argparse模块你值得拥有
全文共1699字 , 预计学习时长11分钟
本文插图
图源:unsplash
相信大多数人都会用这行命令运行python脚本 。
$ python main.py
我们能否对该脚本稍作修改比如说定义自己的参数?当然可以!
$ python main.py arg1 arg2
Python中的argparse模块能解决这个问题 。 argparse 模块可以让人轻松编写用户友好的命令行接口 。
程序定义它需要的参数 , 然后argparse将弄清如何从sys.argv解析出那些参数 。 argparse模块还会自动生成帮助和使用手册 , 并在用户给程序传入无效参数时报出错误信息 。
安装Argparse
和往常一样 , 要做的第一件事就是安装这个Python模块 。
conda install argparse【轻松编写命令行接口,argparse模块你值得拥有】
定义位置参数和可选参数
import argparse if __name__ ==''__main__'': parser = argparse.ArgumentParser(description='''''' This script is going to create an employeeprofile. '''''') parser.add_argument(''name'', help=''Name ofEmployee'') parser.add_argument(''title'', help=''Job Titleof Employee'') parser.add_argument(''--address'', help=''Address ofEmployee'') args = parser.parse_args() NAME= args.name TITLE= args.title ADDRESS= args.address print(''Name :''+NAME) print(''Job Title : ''+TITLE) print(''Address : ''+ADDRESS)
创建一个ArgumentParse的对象parser , 在ArgumentParser中对该脚本做简要描述 。 用add_argument函数定义位置和可选参数 , help用来简单描述这个参数的作用 。
位置参数是必须放在合适位置或是遵循一定顺序的参数 。
本文插图
图源:unsplash
可选参数是输入一个关键字和等号的关键字参数 , 输入内容是可选的 。
· 尝试用help参数-h运行该脚本
$ python employee.py -h usage: employee.py [-h] [--address ADDRESS] name titleThis script is going tocreate an employee profile.positional arguments: nameName of Employee titleJob Title of Employeeoptionalarguments: -h, --helpshow this help message and exit --address ADDRESSAddress of Employee
-h和 --help 是argparse中默认定义的参数 , 显示在脚本中定义的描述 , 为用户在使用该脚本时提供帮助 。
· 输入name 和 title
$ python employee.py AlexManager Name : Alex Job Title : Manager Address : None
由于address参数定义为空 , 在脚本中会把NoneType的值传递给它 。 在输出结果之前需要将其转换成字符串 。
· 试试只输入name
$ python employee.py Alex usage: employee.py [-h] [--address ADDRESS] name title employee.py: error: the following arguments are required: title
因为title也是位置参数 , 所以在脚本中不可省略 。
· 这次输入name,title和address 。
$ python employee.py AlexManager --address 123 Baker Street usage: employee.py [-h] [--address ADDRESS] name title employee.py: error: unrecognized arguments: Baker Street
因为123 Baker Street中间有空格 , 该脚本会把Baker Street当作其他参数 , 这里需要使用双引号 。
$ python employee.py AlexManager --address ''123 Baker Street'' Name : Alex Job Title : Manager Address : 123 Baker Street
如果name和title包含多个单词 , 则要使用双引号 。
推荐阅读
- 驱动之家|智慧屏X1畅连通话体验:与手机随时互连、老人孩子轻松上手
- 归去来兮不复返|iPhone显示已被停用怎么办?不要慌,做好这几步轻松解决!
- 厨房下厨如此轻松,煎炒蒸炸煮!华凌蒸箱款集成灶一机搞定!
- 技术轻松成为跨屏实力派,华为分布式技术Cast+ Kit接入必看!
- Beta科技|1599元机箱装机作业,360水冷成最大看点,压8086K很轻松
- IT168|办公游戏均能轻松胜任 雷柏 MT710 机械红轴键盘评测
- 驱动之家|谷歌改进Chrome 83:轻松移除地址栏中的自动完成历史记录
- 攒一口袋星星ing|创意摄影竟然还能这么拍!只要学会这三步,轻松拍摄优秀作品!
- 清奇科技家|乔布斯没料到!老对手今天轻松碾压Macbook
- 骑士轻松Carry品质生活,比佛利骑士洗衣机给你多面呵护