getopt模块的学习
2024-10-21 03:02:54
在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能。目前有短选项和长选项两种格式。短选项格式为"-"加上单个字母选项;长选项为"--"加上一个单词。
函数getopt(args, shortopts, longopts = [])可以用来取得命令行参数。
其中,参数args一般是sys.argv[1:],shortopts 短格式 (-) ,longopts 长格式(--)
(1)sys.argv可以获取所有的命令行输入参数
#新建脚本get.py:
#!/usr/bin/python3
# coding: UTF-8
import sys
print sys.argv
执行脚本:python get.py -o t --help cmd file1 file2
脚本输出为:['get.py', '-o', 't', '--help', 'cmd', 'file1', 'file2']。可见,所有命令行参数以空格为分隔符,都保存在了sys.argv列表中。
(2)短格式与长格式的参数
例如:命令行中输入:
- python test.py -i 127.0.0.1 -p 80 55 66
- python test.py --ip=127.0.0.1 --port=80 55 66
其中,-i -p是短格式参数,--ip,--port是长格式参数
对于短格式,"-"号后面要紧跟一个选项字母。如果还有此选项的附加参数,可以用空格分开,也可以不分开。空格长度任意,附加参数也可用引号括起来。如:
- -o
- -oa
- -obbbb
- -o bbbb
- -o "a b"
对于长格式,"--"号后面要跟一个单词。如果还有些选项的附加参数,后面要紧跟"=",再加上参数。"="号前后不能有空格。如:
- --help=file1
(3)举栗代码:
try:
options,args = getopt.getopt(sys.argv[1:],"hp:i:",["help","ip=","port="])
except getopt.GetoptError:
sys.exit() for name,value in options:
if name in ("-h","--help"):
usage()
if name in ("-i","--ip"):
print 'ip is----',value
if name in ("-p","--port")
print 'port is----',value
短格式:"hp:i:"-----> h 后面没有冒号:表示后面不带参数,p:和 i:后面有冒号表示后面需要参数
长格式:["help","ip=","port="] ----- >help后面没有等号=,表示后面不带参数,其他三个有=,表示后面需要参数
返回值 options 是个包含元祖的列表,每个元祖是分析出来的格式信息,比如 [('-i','127.0.0.1'),('-p','80')] ;
args 是个列表,包含那些没有'-'或'--'的参数,比如:['55','66']
注意:定义命令行参数时,要先定义带'-'选项的参数,再定义没有'-'的参数
最新文章
- ENode 1.0 - 消息的重试机制的设计思路
- [OpenJudge0054]特务会议召开
- [C#]『CountdownEvent』任务并行库使用小计
- [Unity3D]Unity3D游戏开发之Logo渐入渐出效果的实现
- 剑指Offer第36题—Java版
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)
- docker 设计原理
- SqlServer 字段拼接
- [转自机器之心] 刚入校门的PhD们还可以抢救一下(读研读博指南)
- Datatable的操作方法
- c++中的.hpp文件
- Django框架的使用教程--Cookie-Session[五]
- EasyUI datagrid 查询、设置、提交 三
- 区分slice,splice和split方法
- 多线程-Thread的run()与start()的区别
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
- ZooKeeper(八)-- Curator实现分布式锁
- Zookeeper 源码(七)请求处理
- Linux下清空缓冲区的方法
- C#委托同步异步说明,并比较control调用Invoke和BeginInvoke的异同