Python 3:使用 argparse 库解析命令行参数


#Python#


命令行参数会存放在 sys.argv 中, sys.argv 是一个 list。argparse 是一个内置的参数解析库。

官方文档

argparse 的使用

示例1: 使用纯单词标识必选参数

# 文件名: test_argparse.py

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('filename')

args = parser.parse_args()

print(args.filename)

执行示例:

▶ python3 test_argparse.py
usage: test_argparse.py [-h] filename
test_argparse.py: error: the following arguments are required: filename

▶ python3 test_argparse.py -h
usage: test_argparse.py [-h] filename

positional arguments:
  filename

optional arguments:
  -h, --help  show this help message and exit

▶ python3 test_argparse.py tmp.txt
tmp.txt

默认会有一个 -h 参数用于展示帮助文档。

add_argument 一个不以-开头的纯单词时,代表着这是一个必填的命令行参数。

示例2: 使用纯单词标识多个必选参数

# 文件名: test_argparse.py

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('filename')
parser.add_argument('color')

args = parser.parse_args()

print(args.filename)
print(args.color)

使用示例:

▶ python3 test_argparse.py -h
usage: test_argparse.py [-h] filename color

positional arguments:
  filename
  color

optional arguments:
  -h, --help  show this help message and exit

▶ python3 test_argparse.py tmp.txt red
tmp.txt
red

示例3: 为参数自定义帮助文档

在 add_arguments 中用 help 参数指定命令行参数说明。

# 文件名: test_argparse.py

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('filename', help='要处理的文件名')
parser.add_argument('color', help='颜色')

args = parser.parse_args()

print('文件名', args.filename)
print('颜色', args.color)

执行示例:

▶ python3 test_argparse.py -h
usage: test_argparse.py [-h] filename color

positional arguments:
  filename    要处理的文件名
  color       颜色

optional arguments:
  -h, --help  show this help message and exit

▶ python3 test_argparse.py tmp.txt red
文件名 tmp.txt
颜色 red

示例4: 使用 - 修饰单词标识可选参数

# 文件名: test_argparse.py

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-f', '--filename', help='要处理的文件名')
parser.add_argument('-c', '--color', help='颜色')

args = parser.parse_args()

print('文件名:', args.filename)
print('颜色:', args.color)

执行示例:

▶ python3 test_argparse.py -h
usage: test_argparse.py [-h] [-f FILENAME] [-c COLOR]

optional arguments:
  -h, --help            show this help message and exit
  -f FILENAME, --filename FILENAME
                        要处理的文件名
  -c COLOR, --color COLOR
                        颜色

▶ python3 test_argparse.py -f tmp.txt
文件名: tmp.txt
颜色: None

▶ python3 test_argparse.py -f tmp.txt --color red
文件名: tmp.txt
颜色: red

示例5: 使用default指定可选参数默认值

# 文件名: test_argparse.py

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-f', '--filename', help='要处理的文件名')
parser.add_argument('-c', '--color', help='颜色', default='默认颜色')

args = parser.parse_args()

print('文件名:', args.filename)
print('颜色:', args.color)

执行示例:

▶ python3 test_argparse.py -f tmp.txt
文件名: tmp.txt
颜色: 默认颜色

示例6: 使用 action='store_true' 让参数的出现与否代表布尔值

# 文件名: test_argparse.py

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--has-something', action='store_true')

args = parser.parse_args()

print('has-something:', args.has_something)

执行示例:

▶ python3 test_argparse.py
has-something: False

▶ python3 test_argparse.py --has-something
has-something: True

action 默认是 store,其他取值还有store_truestore_falsestore_constappend 等。


( 本文完 )