06命令行参数

命令行参数

命令行工具的使用能够大大简化代码脚本的维护成本,提升复用性,本文借助于python提供的主流参数解析工具来实现简单功能

 

Python的环境变量配置,找到python.exe的文件夹配入path中即可

四种命令行处理方式:

sys
getopt
optparse
argparse

 

1. sys命令行参数

sys模块主要用于获取和Python解释器相关的信息

sys.argv主要用来获得本身和其中的参数

 

import sys
​
#执行
def start(argv):
    print('程序名',argv[0])
​
if __name__ == '__main__':
    try:
        start(sys.argv[0:])
    #用户中断执行(通常是输入^C)
    except KeyboardInterrupt:
        print('interrupted by user')
        
》》》程序名 sys Part.py

 

 

 

2. getopt命令行参数

getopt是对sys.argv获取的命令行参数进行二次处理。

调用getopt.getopt()函数会返回两个列表——opts/args

  • opts:选项,或称选项值的元组作为一个元素列表(u:/p)当短格式选项(-)选项带了“:”则必带选项值,([”help“,"file="]),中括号内是长格式选项(--),其中“=与:”同作用

  • args:存放没用选项单参数的列表。不属于格式信息的剩余的命令行参数;

示例:

import sys,getopt
​
opts,args = getopt.getopt(sys.argv[1:], "u:p:" ,["file="])
print('opts的值是',opts)
print('args的值是',args)

 

输出:

(venv) λ python getOpt.py -u Anu -p toor --file="flag.txt" extravalue
opts的值是 [('-u', 'Anu'), ('-p', 'toor'), ('--file', 'flag.txt')]
args的值是 ['extravalue']
 

sys.argv[0:]所取参数从程序本身开始:

(venv) λ python getOpt.py -u Anu -p toor --file="flag.txt" extravalue
opts的值是 []
args的值是 ['getOpt.py', '-u', 'Anu', '-p', 'toor', '--file=flag.txt', 'extravalue']
 

3. optparse

已被弃用

optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数,与getopt函数不同的是optparse可以自动生成帮助信息。

 

4. argparse

argparse --- 命令行选项、参数和子命令解析器

argparse是基于optparse的,作用是给这个程序,添加可选参数以实现不同的功能。

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
定义单个的命令行参数应当如何解析。每个形参都在下面有它自己更多的描述,长话短说有:
name or flags - 一个命名或者一个选项字符串的列表,例如 foo -f, --foo。
action - 当参数在命令行中出现时使用的动作基本类型。
nargs - 命令行参数应当消耗的数目。
const - 被一些 action nargs 选择所需求的常数。
default - 当参数未在命令行中出现时使用的值。
type - 命令行参数应当被转换成的类型。
choices - 可用的参数的容器。
required - 此命令行选项是否可省略 (仅选项可用)。
help - 一个此选项作用的简单描述。
metavar - 在使用方法消息中使用的参数值示例。
dest - 被添加到 parse_args() 所返回对象上的属性名。

详见 https://docs.python.org/zh-cn/3.7/library/argparse.html#module-argparse

4.1 简单的参数说明/及变量调用

示例:

paser.add_argument("-u" , "--user" , dest="User" , type=str , default="root" , help="Target User")

 

简单的说明:

 parser.add_argument("可选参数",dest="可用于调用的变量名",type=str,help="说明")用于添加参数

 

简单的调用:

如dest="User",可如此调用paser.parse_args().User

 

 

 

4.2 argparse的实例运用

  • 一个简单到啥都做不了的例子。其默认会有一个-h/--help的输出

输入

import argparse
​
paser = argparse.ArgumentParser()
paser.parse_args()
 

输出:

(venv) λ python argParse.py -h
usage: argParse.py [-h]
​
optional arguments:
  -h, --help  show this help message and exit
 
  • 一个可以用的例子:

paser = argparse.ArgumentParser()
    paser.add_argument('--version', '-v', action='version', version='%(prog)s 1.0') #显示当前版本
​
    paser.add_argument("-u" , "--user" , dest="User" , type=str , default="root" , help="Target User")                       #type
    paser.add_argument('-s' , '--sex' , dest='Sex' , type=str ,choices=['', ''] , default='man' , help="Target Sex")      #choices

 

输出:

usage: argParse.py [-h] [--version] [-u USER] [-s {男,女}]
​
optional arguments:
  -h, --help            show this help message and exit
  --version, -v         Display version information
  -u USER, --user USER  Target User
  -s {男,女}, --sex {男,女}  Target Sex
​

 

 

posted on 2020-07-05 19:12  Po1i  阅读(193)  评论(0)    收藏  举报