getopt两个模块getopt 和gun_getopt 的异同
2024-10-11 11:27:14
getopt的两个模块getopt和gun_getopt都可以接收参数,但是又有不同;
先看 getopt.getopt这个模块:
import sys
import getopt
def main(param):
opts, args = getopt.getopt(param,"hc:s:")
print("opts",opts )
print("args",args)
for opt,arg in opts:
if opt == "-h":
print('help')
elif opt == "-c":
chip = arg
elif opt == '-s':
seq = arg
print('chip',chip,'seq',seq)
if __name__=='__main__':
main(sys.argv[1:])
在命令行运行并得到结果,从结果看到-c 和-s 都得到正确解析,如下图:
但是如果我们换一种输入参数,得到结果不能正确解析,如下图: 发现从5之后就没有解析,这些没有解析的参数放在args当中,导致seq 变量声明,最终报错。
而实际情况有这种需要,比如如下情况,可用getopt.gnu_getopt模块:
import sys
import getopt
def main(param):
opts, args = getopt.gnu_getopt(param,"hc:s:")
print(opts, args)
if len(args)== 1:
if args[0]=="Model1":
for opt,arg in opts:
if opt == "-h":
sys.exit(0)
elif opt == "-c":
chip = arg
print('Molde1','chip',chip)
elif args[0]=="Model2":
for opt,arg in opts:
if opt == "-h":
sys.exit(0)
elif opt == "-c":
chip = arg
elif opt == "-s":
seq = arg
print('Molde1','chip',chip,'seq',seq)
if __name__=='__main__':
main(sys.argv[1:])
在命令行输入参数,所有参数得到正常解析。
总结:getopt.gnu_getopt有getopt.getopt的基本接受参数功能,但是对参数中有 [option] 选项的时候,需要用getopt.getopt解决。
最新文章
- 19-typedef
- NoSql数据库初探-mongoDB环境搭建
- left join on 和where条件的放置
- vs2013的安装以及单元测试
- 【转】如何建立一个样式新颖的CSS3搜索框
- [codevs1155][KOJ0558][COJ0178][NOIP2006]金明的预算方案
- SAE云平台上传图片和发送邮件
- spring data redis使用示例
- Wbemtest查询
- Linux 常用命令记录
- leetcode remove Nth Node from End python
- Erich Gamma
- Unity3D【新手问题】阴影效果不显示的原因
- Apache Zeppelin
- Vue组件中的问题
- 转载:实现MATLAB2016a和M文件关联
- 蜕变成蝶~Linux设备驱动之中断与定时器
- Modbus通信协议 【 初识 Modbus】
- 2018.12.31 NOIP训练 czy的后宫5(树形dp)
- Eclipse关掉项目SVN的链接
热门文章
- bzoj 4565 字符合并
- 配置文件Struts.xml 中type属性 redirect,redirectAction,chain的区别
- 【java规则引擎】drools6.5.0版本api简介
- Spring IOC容器在Web容器中是怎样启动的
- unity drawcall测试
- windows中文编码报错 com.google.gson.JsonIOException: java.nio.charset.MalformedInputException: Input length = 1
- DHCP(四)
- Java-Maven-Runoob:Maven 构建 &; 项目测试
- PHP中的逻辑判断函数empty() isset() is_null() ==NULL ===NULL
- python开发模块基础:异常处理&;hashlib&;logging&;configparser