Python编写带选项的命令行程序方法

作者:_荣耀之路_ 时间:2023-11-18 20:47:35 

运行python程序时,有时需要在命令行传入一些参数。常见的方式是在执行时,在脚本名后直接追加空格分隔的参数列表(例如 python test.py arg0 arg1 arg2),然后在脚本中就可以通过sys.argv获取所有的命令行参数。

这种方式的优点是传参方便,参数获取简单;缺点是执行脚本时,必须知道参数的顺序,并且不能设置默认值,所有参数每次都必须传入。

还有一种命令行传参方式是通过带选项的方式进行传参(例如python test.py -p0=arg0 -p1=arg1)。

这种方式的优点是参数不用按照固定的顺序传入,并且对于有默认值的参数,可以不传参数直接使用默认值;缺点是传入参数时需要额外加上选项。

对于带选项的命令行参数,可以通过python自带的getopt模块来进行解析。

主要方法:

getopt(args, shortopts, longopts = []):解析命令行选项和参数列表。

args是不包括运行程序引用的参数列表,通常来说就是sys.args[1:]。

shortopts是脚本要识别的短选项字母,如果短选项需要参数,需要在字母后加冒号“:”。

longopts是支持的长选项,是一个长选项名称的列表。选项名称不包括“-”。需要参数的长选项,需要在后面加一个等号“=”。

返回值包括两个列表:第一个列表中是(选项,值),如果选项没有参数,值为空字符串。第二个列表是剥离选项之后的程序参数列表。长项前用“--”,短项前用“-”。

另外要注意的是当进行命令行参数解析时,如果遇到了非选项的参数时,就会停止带选项参数的解析。

简单示例


#!/usr/bin/python
# -*- coding: gbk -*-
import sys
import getopt
def printUsage():
print ('''usage: test.py -i <input> -o <output>
   test.py --in=<input> --out=<output>''')

def main():
inputarg=""
outputarg=""
try:
opts, args = getopt.getopt(sys.argv[1:],"hi:o:",["in=","out="])
except getopt.GetoptError:
printUsage()
sys.exit(-1)
for opt,arg in opts:
if opt == '-h':
printUsage()
elif opt in ("-i", "--in"):
inputarg=arg
elif opt in ("-o","--out"):
outputarg=arg
print ('输入:'+inputarg)
print ('输出:'+outputarg)
print ('其他程序参数:'+",".join(args))
if __name__=="__main__":
main()

来源:https://blog.csdn.net/asty9000/article/details/79254817

标签:Python,选项,命令行
0
投稿

猜你喜欢

  • windows下安装make及使用makefile文件

    2023-05-08 07:50:53
  • 浅析mysql 语句的调度优先级及改变

    2024-01-24 21:27:35
  • 做设计还是做产品

    2009-06-11 13:01:00
  • ASP 高级模板引擎实现类

    2011-03-25 10:54:00
  • python读取csv和txt数据转换成向量的实例

    2021-09-12 12:01:24
  • vue百度地图 + 定位的详解

    2024-06-07 15:20:37
  • 如何判断元素是否为HTMLElement元素

    2024-04-18 10:15:27
  • Python把图片转化为pdf代码实例

    2021-04-05 19:06:36
  • Python 批量合并多个txt文件的实例讲解

    2022-09-18 07:39:47
  • windows下mysql 5.7.20 安装配置方法图文教程

    2024-01-20 16:19:02
  • php使用composer常见问题及解决办法

    2023-07-10 13:54:53
  • Django在pycharm下修改默认启动端口的方法

    2023-09-27 09:04:07
  • Python操作MySQL数据库的示例代码

    2024-01-29 03:55:09
  • 在Python 中同一个类两个函数间变量的调用方法

    2022-07-02 04:53:57
  • Python中顺序表的实现简单代码分享

    2022-08-31 22:26:36
  • Python3 类型标注支持操作

    2021-12-25 05:39:41
  • 纯js实现动态时间显示

    2024-05-05 09:13:44
  • python绘制玫瑰的实现代码

    2021-04-25 09:42:52
  • Vue实现页面添加水印功能

    2024-04-28 09:24:06
  • 微信小程序实现顶部搜索框

    2024-05-02 16:21:03
  • asp之家 网络编程 m.aspxhome.com