Python命令行参数argv和argparse该如何使用
本文详细介绍了Python中获取命令行参数的两种常用方式:sys.argv和argparse模块。sys.argv简洁直接,适合简单场景;argparse功能丰富,支持类型检查、默认值、帮助信息等,适合复杂参数处理。文章通过具体代码示例展示了两种方法的使用方法及注意事项。
概述
在运行Python脚本时,通过命令行传入参数通常有以下两种常见方式:
- sys.argv - 简洁
- argparse - 功能丰富,支持自定义
下面详细介绍这两种方法的具体使用方式。
sys.argv
# test_argv.py
import sys
args = sys.argv
print(f'args = {args}')
>>> output
➜ git:(master) python3 test_argv.py
args = ['test_argv.py']
➜ git:(master) ✗ python3 test_argv.py 1 2 3
args = ['test_argv.py', '1', '2', '3']
➜ git:(master) ✗ python3 test_argv.py 1 2 3 'hello world !'
args = ['test_argv.py', '1', '2', '3', 'hello world !']
从上面的示例可以看出,通过argv方法获取的结果:
- 返回的是一个列表(list)
- 列表中的第一个元素是脚本本身的文件名
- 如果参数中包含空格,需要用引号将其包裹
argparse
argparse模块的功能更为丰富,其核心是通过add_argument方法来自定义入参的标志、格式、类型和范围等特性。常用参数如下:
- *name_or_flag - 定义入参名或flag,例如'-n', '--number'
- type - 指定入参的数据类型
- choices - 指定入参的可选范围
- default - 指定入参的默认值
- required - 指定该参数是否为必填项,类型为布尔值
- help - 参数的简要说明
更多详细信息请参考官方文档:argparse
实例
test_argv.py
import argparse
# 初始化一个parser对象
parser = argparse.ArgumentParser(description='test module of argparse')
# 指定-n/--number的参数
# 类型为int
# help为简短地说明
parser.add_argument(
'-n', '--number', type=int,
help='args of number'
)
# 指定-o/--output参数
# 并限制类型为:['txt', 'csv', 'doc']
parser.add_argument(
'-o', '--output', type=str,
choices=['txt', 'csv', 'doc'],
help='output method'
)
# 指定-d/--default参数
# 并限制类型为:['txt', 'csv', 'doc']
parser.add_argument(
'-d', '--default', type=int,
choices=[_ for _ in range(1, 10)],
default=5,
help='default'
)
# 指定位置参数foo
parser.add_argument('foo')
args = parser.parse_args()
print(f'args = {args}')
# 获取指定参数
print(
f'number = {args.number}, type = {type(args.number)}\n'
f'output = {args.output}, type = {type(args.output)}\n'
f'default = {args.default}, type = {type(args.default)}\n'
f'foo = {args.foo}, type = {type(args.foo)}'
)
输出结果
# -h - 打印help
➜ git:(master) ✗ python3 test_argv.py -h
usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]
[-d {1,2,3,4,5,6,7,8,9}]
foo
test module of argparse
positional arguments:
foo
optional arguments:
-h, --help show this help message and exit
-n NUMBER, --number NUMBER
args of number
-o {txt,csv,doc}, --output {txt,csv,doc}
output method
-d {1,2,3,4,5,6,7,8,9}, --default {1,2,3,4,5,6,7,8,9}
default
# 不带参数运行,结果为None
➜ git:(master) ✗ python3 test_argv.py
args = Namespace(number=None, output=None)
number = None
output = None
# 带参数运行
➜ git:(master) ✗ python3 test_argv.py -n 33 --output txt
args = Namespace(number=33, output='txt')
number = 33, type = <class 'int'>
output = txt, type = <class 'str'>
# 参数格式错误
➜ git:(master) ✗ python3 test_argv.py -n str
usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]
test_argv.py: error: argument -n/--number: invalid int value: 'str'
➜ git:(master) ✗ python3 test_argv.py -o excel
usage: test_argv.py [-h] [-n NUMBER] [-o {txt,csv,doc}]
test_argv.py: error: argument -o/--output: invalid choice: 'excel' (choose from 'txt', 'csv', 'doc')
# 默认参数
➜ git:(master) ✗ python3 test_argv.py
args = Namespace(default=5, number=None, output=None)
number = None, type = <class 'NoneType'>
output = None, type = <class 'NoneType'>
output = 5, type = <class 'int'>
以上就是Python命令行参数argv和argparse使用方法的详细内容,更多关于Python命令行参数argv和argparse的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









