在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能。目前有短选项长选项两种格式。短选项格式为"-"加上单个字母选项;长选项为"--"加上一个单词。
函数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']
注意:定义命令行参数时,要先定义带'-'选项的参数,再定义没有'-'的参数
 
 
 

最新文章

  1. ENode 1.0 - 消息的重试机制的设计思路
  2. [OpenJudge0054]特务会议召开
  3. [C#]『CountdownEvent』任务并行库使用小计
  4. [Unity3D]Unity3D游戏开发之Logo渐入渐出效果的实现
  5. 剑指Offer第36题—Java版
  6. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)
  7. docker 设计原理
  8. SqlServer 字段拼接
  9. [转自机器之心] 刚入校门的PhD们还可以抢救一下(读研读博指南)
  10. Datatable的操作方法
  11. c++中的.hpp文件
  12. Django框架的使用教程--Cookie-Session[五]
  13. EasyUI datagrid 查询、设置、提交 三
  14. 区分slice,splice和split方法
  15. 多线程-Thread的run()与start()的区别
  16. 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#串口通信程序
  17. ZooKeeper(八)-- Curator实现分布式锁
  18. Zookeeper 源码(七)请求处理
  19. Linux下清空缓冲区的方法
  20. C#委托同步异步说明,并比较control调用Invoke和BeginInvoke的异同

热门文章

  1. Centos7.4 docker安装包下载以及离线安装
  2. python3 使用random函数批量产生注册邮箱
  3. php代码审计之命令执行中windows/linux的差异化问题
  4. TheSuperego 实验六 团队作业3:项目需求分析与原型设计
  5. mysql 多字段联合唯一索引
  6. Linux实现ffmpeg H.265视频编码
  7. 【八】Kubernetes 五种资源控制器详细介绍以及功能演示
  8. python+selenium_鼠标事件
  9. ES6中的新特性:Iterables和iterators
  10. Java显式锁