argparse语句的使用

Celandine ·
更新时间:2024-11-13
· 673 次阅读

argparse是python语言内置的一个 关于参数设定 的函数

其基本形式如下,

import argparse def get_parser(): parser = argparse.ArgumentParser(description="inpunt your name, this is the description of this parser function") parser.add_argument('name', metavar='NAME',default='like',type=str,help='input your name') #parser.add_argument('-name', metavar='NAME',default='like',type=str,help='input your name') return parser if __name__ == '__main__': parser = get_parser() args1 = parser.parse_args() name = args1.name print('Hello {}'.format(name))

然后在终端(cmd,terminal)中, cd到py文件的路径,文件名为 test1.py,
输入

python test1.py haobo

如果是用注释中的格式,则是输入

python test1.py -name haobo

最后会得到结果:

Hello haobo

总的来说,最重要的就是第一个参数,即参数名字一定要设定,其他的参数都会有默认中的默认值,像metavar和help 都是帮助自己和读者理解这个参数的含义和使用。
default后面跟的则是自己编写的,在没有参数输入时的默认值
对于一些可以更改的变量如下在变量后都加了数字,

parser = get_parser() args1 = parser.parse_args() name2 = args1.name print('Hello {}'.format(name2))

args1.name中的name也可以更改,只要与最开始定义中的变量名字对应就能成功识别。
所以,如果多个变量,程序可以改成这样:

import argparse def get_parser(): parser = argparse.ArgumentParser(description="input your name") parser.add_argument('name1') parser.add_argument('name2') return parser if __name__ == '__main__': parser = get_parser() args = parser.parse_args() name1 = args.name1 name2 = args.name2 print('Hello {} {}'.format(name1,name2))

输入 python test1.py haobo zhang
得到 Hello haobo zhang

前面提到了定义中 -name的方式,还可以使用两个-。即–name。这个方式虽然输入比较麻烦,但是由于参数的输入的位置在默认情况下与参数定义的位置一致,很容易参数对应出错。
比如在上程序中,总是name1在前,name2在后
输入:python test1.py I_love you
输出:Hello I_love you

输入:python test1.py you I_love
输出:Hello you I_love

使用带- 或–的方式定义,结果如下,
输入:python test1.py --name2 you --name1 I_love
输出:Hello I_love you

输入:python test1.py --name1 I_love --name2 you
输出:Hello I_love you
结果相同并且都是I love you xixixix

最后讲一下不在终端怎么输入参数,第一步
第二步
点击run中的Edit Configuration, 然后在parameters 一栏按照上面说的输入参数就能得到结果。

参考:
(https://blog.csdn.net/chenguiyuan1234/article/details/84799388)

(https://blog.csdn.net/yy_diego/article/details/82851661)


作者:张昊博的练功场



argparse

需要 登录 后方可回复, 如果你还没有账号请 注册新账号