第一种方式,使用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}!")