首页 > 编程语言 >python getopt

python getopt

时间:2023-09-11 10:44:17浏览次数:65  
标签:help python sys 参数 output getopt opts

getopt

在写脚本程序的时候需要添加一些额外的参数来实现脚本的附加功能或者增强功能,通常的做法是同sys.argv[i]直接来获取参数的值,但是这个比较局限,要求参数的输入一定要按照顺序。

fileName = sys.argv[1];
regName  = sys.argv[2];

如果在命令行输入的第一个参数不是文件的名字,那么脚本执行就会出问题。并且上面要求一定要输入2个参数才能运行。有很大的局限性,如果脚本是开发者本人使用,可能问题不大,如果是交给其他人使用可能就不友好了。

为了实现参数顺序任意摆放都可以,参数个数任意个数都可以执行脚本,可以使用getopt()函数来实现功能。

1.加入getopt模块

from getopt import getopt;    # getopt模块中还有其他函数,这里只需要getopt

2.调用getopt函数

opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])#"ho:"也可以写成'-h-o:'

print(opts)
print(args)
  1. 使用sys.argv[1:]过滤掉第一个参数(它是执行脚本的名字,不应算作参数的一部分)。

  2. 使用短格式分析串"ho:"。当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。所以"ho:"就表示"h"是一个开关选项;"o:"则表示后面应该带一个参数。

  3. 使用长格式分析串列表:["help", "output="]。长格式串也可以有开关状态,即后面不跟"="号。如果跟一个等号则表示后面还应有一个参数。这个长格式表示"help"是一个开关选项;"output="则表示后面应该带一个参数。

  4. 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数,即不是按照getopt()里面定义的长或短选项字符和附加参数以外的信息。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。

  5. 整个过程使用异常来包含,这样当分析出错时,就可以打印出使用信息来通知用户如何使用这个程序。

3.使用的例子

python xxx.py '-h -o file --help --output=out file1 file2'

opts的输出结果为:
[('-h', ''), ('-o', 'file'), ('--help', ''), ('--output', 'out')]

而args则为:
['file1', 'file2'],这就是上面不属于格式信息的剩余的命令行参数。

4.推荐使用方式

import getopt, sys

opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])
for o, a in opts:
    if o in ("-h", "--help"):
        usage()
        sys.exit()
    if o in ("-o", "--output"):
        output = a

使用一个循环,每次从opts中取出一个两元组,赋给两个变量。o保存选项参数,a为附加参数。接着对取出的选项参数进行处理。代码中通常要添加一个usage函数来告诉用户如何使用脚本。

标签:help,python,sys,参数,output,getopt,opts
From: https://www.cnblogs.com/yuandonghua/p/17692936.html

相关文章

  • Python从零到一构建项目​
    Python从零到一构建项目随着互联网的发展,网络上的信息量急剧增长,而获取、整理和分析这些信息对于很多人来说是一项艰巨的任务。而Python作为一种功能强大的编程语言,它的爬虫能力使得我们能够自动化地从网页中获取数据,大大提高了效率。本文将分享如何从零到一构建一个简单的网络爬虫......
  • python 集合特点&建立集合的三种方式
    一、9.10晚上python集合之特点和建立集合的三种方式_思维导图 2、IDLE执行记录   ......
  • python实现猜数字小游戏​
    功能需求尝试利用Python实现一个猜数字小游戏,要求给定用户1—100之间的任意一个数字,用户有十次机会,每次输入一次数字都会减少一次机会。如果用户在机会用完之前猜对数字,或者是在机会用完时也没有猜对数字那么这场游戏结束。功能分析1:引入random模块,使用random.randin()随机生成1—......
  • python之virtualenv虚拟环境
    1.用途:虚拟环境将开发环境相互隔离(如版本),互相不影响.①.virtualenv创建一个虚拟化的python运行环境,安装所需的依赖,使不同项目之间相互不干扰.2.安装:pipinstallvirtualenvvirtualenv--version//检查是否安装成功,查看版本(1).加速镜像源:①.清华源:h......
  • 【Python基础】list(列表)
    list作为Python中最常用的数据结构之一,与其他编程语言的数组有相似的特点,但是它具有着更为强大的功能,接下来将详细地为大家介绍一下list的所有操作。(注:tuple元组类型与list类似,但是tuple的元素不能修改;set集合与list也类似,但是集合中的元素是无序的,且会自动除去重复元素)1.list......
  • Python---0基础学习笔记(一)提供pycharm激活码
    Python语言和开发环境Python下载官网https://www.jetbrains.com/pycharm/download/?section=windows激活码⬇⬇⬇MXMQUYT815-eyJsaWNlbnNlSWQiOiJNWE1RVVlUODE1IiwibGljZW5zZWVOYW1lIjoiSHVuYW4gSW5zdGl0dXRlIG9mIFNjaWVuY2UgYW5kIFRlY2hub2xvZ3kiLCJhc3NpZ25lZU5hbWUiOiJqaWtlIGNv......
  • Python学习笔记-Python循环语句
    while循环的基础语法while语法格式while条件:条件满足时,做的事情1条件满足时,做的事情2条件满足时,做的事情3…(省略)…只要满足条件,会无限循环执行。示例:小美心软,只要表白100次,就会成功。print("小美,我喜欢你")print("小美,我喜欢你")print("小美,我喜欢你")…(还有97次......
  • Python 潮流周刊第 19 期摘要
    原文全文:https://pythoncat.top/posts/2023-09-09-weekly......
  • ⑧初识python--python的列表推导式
    python的列表推导式1、什么是推导式推导式comprehensions(又称为解析式),是python的一个独有特性。推导式是可以从一个数据序列构建另一个新的数据序列(一个有规划的列表或控制一个有规律列表的结构体。共有三种推导式:列表推导式,集合推导式,字典推导式。2、为什么需要推导式列表推......
  • python学习笔记-redis缓存数据库
    一、缓存数据库介绍NoSQL(notonlysql)redis是业界主流的Key-valuenosql数据库之一,和memcached类似redis优点:速度快,每秒可执行大约110000设置操作,81000个/每秒的读取操作支持丰富的数据类型,列表,结合,可排序集合,哈希等操作是原子的二、redis操作安装redisubuntu安装$......