1. 简介
大家好,我是Taonny!
通常我们在执行一个python脚本时,在python环境配置的情况下,命令行执行 python main.py, 就能运行python文件main.py,实例如下:
main.py
def print_hi(name):
print(f'Hi, {name}')
if __name__ == '__main__':
print_hi('PyCharm')
[Taonny@tn-test1010 /home/script]$ python main.py
Hi, PyCharm
但在很多情况下,我们需要在命令行执行时给脚本传入一些变量参数,可以使脚本运行更加方便灵活
python命令行参数的4中常见方式:
·内置sys.argv
·内置argparse
·内置getopt
·第三方依赖库click
本篇主要介绍内置sys.argv(适用于非正规场景快速构建命令行参数);·内置argparse(适用于参数多、面向用户的正式生产环境)
2. sys.argv
内置sys.argv是构建命令行参数最简单、常用的方式
工作原理:将脚本本身及参数以一个有序列表传入,所以使用的时候传参顺序必须固定,因此,这种方式适用于参数个数较少且场景固定的项目中
test_argv.py
import sys
# 利用sys.argv获取到参数列表
args = sys.argv
print(args)
# 通过打印看看参数
j = 1
for i in args:
print("传入的第{}个参数是:{}".format(j, i))
j += 1
# 所以在使用时,我们可以通过列表切片获取除脚本本身的所有有效参数
args = sys.argv[1:]
print(args)
执行结果:
[Taonny@tn-test1010 /home/script]$ python .\test_args.py nihao Taonny
['.\\test_args.py', 'nihao', 'Taonny']
传入的第1个参数是:.\test_args.py
传入的第2个参数是:nihao
传入的第3个参数是:Taonny
['nihao', 'Taonny']
3. argparse
内置argparse可以快速编写清晰的命令行参数脚本,而且能够自动生成帮助是由手册,用户给脚本传入无效或错误参数时能抛出清晰的错误信息
官方文档: https://docs.python.org/zh-cn/3.10/library/argpase.html
构建命令行参数步骤如代码实例:
test_argv.py
import argparse
# 1. 使用argparse模块构建一个命令行参数解析对象
parser = argparse.ArgumentParser(description="命令行参数")
# 2. 添加命令行参数
"""
add_argument()参数简单说明:
第一个参数:参数全称
第二个参数:参数简称
第三个参数:参数类型
第四个参数:参数说明
第五个参数:参数是否为必须参数,默认为False非必要参数
"""
parser.add_argument('--arg1', '-a1', type=int, help='参数1,非必须参数')
parser.add_argument('--arg2', '-a2', type=int, help='参数1,非必须参数')
parser.add_argument('--arg3', '-a3', type=int, help='参数1,必须参数', required=True)
# 3. 解析参数
args = parser.parse_args()
print(args)
print("第1个参数: {}".format(args.arg1))
print("第2个参数: {}".format(args.arg2))
print("第3个参数: {}".format(args.arg3))
在命令行不传入参数执行,输出如下,从输出结果可以看出,执行后抛出了脚本执行用法及错误,且有一个-h的参数,这个时自动生成的帮助文档
[Taonny@tn-test1010 /home/script]$ python .\test_args.py
usage: test_args.py [-h] [--arg1 ARG1] [--arg2 ARG2] --arg3 ARG3
test_args.py: error: the following arguments are required: --arg3/-a3
在命令行执行python .\test_args.py -h,查看脚本参数帮助文档
[Taonny@tn-test1010 /home/script]$ python .\test_args.py -h
usage: test_args.py [-h] [--arg1 ARG1] [--arg2 ARG2] --arg3 ARG3
命令行参数
options:
-h, --help show this help message and exit
--arg1 ARG1, -a1 ARG1
参数1,非必须参数
--arg2 ARG2, -a2 ARG2
参数1,非必须参数
--arg3 ARG3, -a3 ARG3
参数1,必须参数
正确执行python .\test_args.py -a1 1 -a2 2 -a3 3
[Taonny@tn-test1010 /home/script]$ python .\test_args.py -a1 1 -a2 2 -a3 3
Namespace(arg1=1, arg2=2, arg3=3)
第1个参数: 1
第2个参数: 2
第3个参数: 3