argparse 必选参数
时间: 2023-07-19 07:40:47 浏览: 48
argparse 是 Python 内置的命令行参数解析模块,可以用于解析命令行参数和选项。在 argparse 中,必选参数可以通过 add_argument() 方法的 required 参数来指定。
例如,以下代码定义了一个必选参数 -f:
```python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file', required=True, help='input file path')
args = parser.parse_args()
print(args.file)
```
在命令行中运行该脚本时,必须指定 -f 参数,否则 argparse 会报错提示缺少必选参数:
```
$ python script.py
usage: script.py [-h] -f FILE
script.py: error: the following arguments are required: -f/--file
```
正确的使用方式如下:
```
$ python script.py -f input.txt
input.txt
```
相关问题
argparse 添加可选参数
在使用 argparse 添加可选参数时,需要使用 add_argument() 方法来定义参数。这个方法有多个参数,其中最重要的有两个:参数名和参数选项。
参数名是用来标识这个参数的,可以是一个字符串或者一个列表,如果是一个列表,则第一个元素为短参数名,第二个元素为长参数名。
参数选项用来指定这个参数的类型、默认值、描述文本等信息,可以通过调用 add_argument() 方法的一系列参数来指定。例如:
```python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--name', default='World', help='Your name')
args = parser.parse_args()
print('Hello, {}!'.format(args.name))
```
在这个例子中,我们定义了一个名为 --name 的可选参数,它的默认值为 'World',描述文本为 'Your name'。当用户在命令行中输入 --name=xxx 时,程序会将 xxx 作为参数值传递给我们的脚本。如果用户没有输入 --name,程序会使用默认值 'World'。
我们可以使用以下命令来运行这个脚本:
```bash
python script.py --name=John
```
输出结果:
```
Hello, John!
```
argparse的参数
argparse的参数主要有以下几种类型:
1. 位置参数(Positional arguments):这些参数是根据它们在命令行中出现的位置进行解析的,没有特定的标志。例如,`parser.add_argument("filename")`。
2. 可选参数(Optional arguments):这些参数是可选择的,可以在命令行中加上标志来指定它们。例如,`parser.add_argument("-v", "--verbose", help="increase output verbosity")`,其中"-v"和"--verbose"都是可选参数的标志,通过加上这些标志在命令行中指定了该参数。
3. 必选参数(Required arguments):这些参数是必须提供的,如果没有提供会报错。可以通过`required=True`来指定。
4. 默认值参数(Default arguments):这些参数有一个默认值,在命令行中不指定时会使用默认值。可以通过`default=value`来指定默认值。
5. 数据类型参数(Type arguments):这些参数可以指定参数的数据类型,可以是整数、字符串、布尔值等。可以通过`type=int`来指定参数为整数类型。
6. 互斥参数(Mutually exclusive arguments):这些参数是相互排斥的,只能同时出现一个。可以通过`parser.add_mutually_exclusive_group()`来创建一个互斥参数组。
7. 计数参数(Count arguments):这些参数用于统计选项出现的次数,通过`action='count'`来指定。
8. 子命令参数(Sub-commands arguments):这些参数用于支持在命令行中添加子命令,例如`git commit`中的"commit"就是一个子命令。可以通过`parser.add_subparsers()`来支持子命令。
这些参数类型可以根据需要进行组合使用,以满足不同的命令行参数解析需求。