Python 脚本命令行定制参数——系统模块getopt

在使用linux命令的时候,如果不知道命令用法,可以使用命令加–help、-h去查看帮助,–list、-l查看列表,–version、-v查看当前命令/程序版本,那么这些在同样是脚本的python中如何实现呢?

话不多说见代码 custom_option.py

# ! /usr/bin/env python
# coding=utf8
import sys
import getopt

VERSION=1.0.0
USAGE="""
你可以定制下列参数
-h --help 查看帮助菜单
-v --version 查看当前版本
-d --date 指定日期参数
-n --name 指定姓名参数
"""
if __name__ == "__main__" :
    #参数校验
	try:
    	options,args = getopt.getopt(sys.argv[1:],'hvd:n:',['help','version','date=','name=','class=']
    except getopt.GetoptError:
        print("参数输入错误,请尝试 [python get_user_info.py -h] 获取帮助说明")
        sys.exit(1)
    ##参数使用
    date=''
    name=''
    for k,v in options:
        if k in ('-h','--help')
        	print(USAGE)
        if k in ('-v','--version')
        	print(VERSION)
        if k in ('-d','--date')
        	date=v
        	print(date)
        if k in ('-n','--name')
        	name=v
        	print(name)

关于getopt

getopt需要三个参数(args, shortopts, longopts:list=[]):

  • args 即用户输入的参数 args[0]是脚本名,所以取args[1:];
  • shortopts 短参是由单个字符拼成的字符串,如果该参数需要输入则字符后面跟’:’
  • longopts 是由长参数字符串组合的list,如果该参数需要输入则该字符串后面跟‘=’

使用

上述代码可以像多参数命令一样使用了。

python custom_option.py -v
1.0.0
python custom_option.py --no
参数输入错误,请尝试 [python get_user_info.py -h] 获取帮助说明
python custom_option.py -d 2020-02-02
2020-02-02
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,接受命令行参数有多种方法,下面列举了其中一些常见的方法: 1. 使用sys模块:这是Python标准库中的一种方法,可以使用sys.argv来获取命令行参数。其中,sys.argv[0]表示脚本文件名,sys.argv[1:]表示传递的参数列表。示例代码如下: ```python import sys if len(sys.argv) == 1: print("Usage: python script.py arg1 arg2 ...") else: args = sys.argv[1:] print("Command line arguments:") for arg in args: print(arg) ``` 2. 使用argparse模块:这是Python标准库中的另一种方法,可以更方便地处理命令行参数。可以指定参数的名称、类型、默认值等。示例代码如下: ```python import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)') args = parser.parse_args() print(args.accumulate(args.integers)) ``` 3. 使用getopt模块:这是Python标准库中的另一种方法,可以处理更复杂的命令行参数,支持短选项和长选项。示例代码如下: ```python import getopt import sys def main(argv): inputfile = '' outputfile = '' try: opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="]) except getopt.GetoptError: print ('test.py -i <inputfile> -o <outputfile>') sys.exit(2) for opt, arg in opts: if opt == '-h': print ('test.py -i <inputfile> -o <outputfile>') sys.exit() elif opt in ("-i", "--ifile"): inputfile = arg elif opt in ("-o", "--ofile"): outputfile = arg print ('Input file is "', inputfile) print ('Output file is "', outputfile) if __name__ == "__main__": main(sys.argv[1:]) ``` 以上是Python接受命令行参数的一些常见方法,不同的方法适用于不同的场景,选择合适的方法可以让命令行参数的处理更加方便和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值