前言
在运行python
程序时,我们或许需要一些可选参数。对于这些参数,我们可以通过命令行输入。
-
在最简单的情况下,我们通过命令运行
python
使用程序的命令如下所示python demo.py # demo它是程序的名称,可以自由选择
-
我现在想加一个参数
name
,该怎么办?其中一种方法如下所示python demo.py --name Trump
我见过很多次这样,那么这个功能是如何实现的呢?argparse
包可以实现。
argparse
现在假定,python
文件名为demo.py
。
主要步骤
简单的用法主要分为以下四个步骤。
-
首先导入
argparse
包import argparse
-
通过
ArgumentParser()
创建参数分析器,即parse
对象。函数的参数是对分析器的描述parser = argparse.ArgumentParser(description="Demo of argparse")
-
通过
add_argument()
添加参数-
添加一个
name
属性parse.add_argument('-n', '--name', default='nsy') parse.add_argument('-y', '--year', default='2022')
- 这里的
-n
和--name
使用命令行输入参数时,没有区别。但当两者都在时add_argument()
当它同时出现时,系统默认后者是参数名 - 此时,可以通过命令行添加
name
如何显示参数?
- 这里的
-
-
通过
parse.parse_args()
取出args = parse.parse_args() print(args)
完整程序
import argparse parse = argparse.ArgumentParser(description='Demo of argparse') parse.add_argument('-n', '--name', default='nsy') parse.add_argument('-y', '--year', default='2022') args = parse.parse_args() print(args) name = args.name year = args.year
print('Hello {} is {}'.format(name, year))
利用命令行运行demo.py
-
python demo.py
。输出如下Namespace(name='nsy', year='2022') # 两个参数都是默认值 Hello nsy is 2022
-
python nsy_test.py -n qyb --y 2023
。输出如下- 我们可以看到,在命令行中,
'-n','--name'
表示同一个参数。当然我们在add_argument()
中可以只写一个
Namespace(name='qyb', year='2023') # 两个参数和输入的一致 Hello qyb is 2023
- 我们可以看到,在命令行中,
-
将
name = args.name
改为name = args.n
程序会报错。因为系统认为后一个才是参数名
本文主要参考argparse基本用法_骑着蜗牛向前跑的博客-CSDN博客_argparse