python解析命令行参数

第一种方式,使用sys模块获取参数

sys.argv[0] 脚本名称
sys.argv[1] 第一个参数
sys.args[2] 第二个参数


第二种方式,使用标准库中的参数解析模块

getopt

opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])

getopt()第一个参数是参数列表,需要剔除第一个脚本名称参数
getopt()第二个参数是短格式列表,不带参数":"时表示开关状态
getopt()第三个参数是长格式列表,不带参数"="时表示开关状态
opts获取的是参数向量,args获取的是剩余参数

optparse

   #usage 定义的是使用方法,%prog 表示脚本本身,version定义的是脚本名字和版本号  
   parse=optparse.OptionParser(usage='"usage:%prog \[options\] arg1,arg2"',version="%prog 1.2")  
   parse.add\_option('-u','--user',dest='user',action='store',type=str,metavar='user',help='Enter User Name!!')  
   parse.add\_option('-p','--port',dest='port',type=int,metavar='xxxxx',default=3306,help='Enter Mysql Port!!')  
   parse.add\_option('-v',help='Mysql Version!!')  
   #-u,--user 表示一个是短选项 一个是长选项  
   #dest='user' 将该用户输入的参数保存到变量user中,可以通过options.user方式来获取该值  
   #type=str,表示这个参数值的类型必须是str字符型,如果是其他类型那么将强制转换为str(可能会报错)  
   #metavar='user',当用户查看帮助信息,如果metavar没有设值,那么显示的帮助信息的参数后面默认带上dest所定义的变量名  
   #help='Enter..',显示的帮助提示信息  
   #default=3306,表示如果参数后面没有跟值,那么将默认为变量default的值  
   parse.set\_defaults(v=1.2)  #也可以这样设置默认值  
   options,args=parse.parse\_args()  
   print 'OPTIONS:',options  
   print 'ARGS:',args

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))

https://docs.python.org/zh-cn...


第三种方式,使用第三方工具

click

import click

@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
              help='The person to greet.')
def hello(count, name):
    """Simple program that greets NAME for a total of COUNT times."""
    for x in range(count):
        click.echo('Hello %s!' % name)

https://click.palletsprojects...

Typer

app = typer.Typer()


@app.command()
def hello(name: str):
    typer.echo(f"Hello {name}")


@app.command()
def goodbye(name: str, formal: bool = False):
    if formal:
        typer.echo(f"Goodbye Ms. {name}. Have a good day.")
    else:
        typer.echo(f"Bye {name}!")

https://typer.tiangolo.com/

你可能感兴趣的:(python)