一、sys.argv是什么
sys.argv
是python自带的一个模块,它是一个列表,其中包含了命令行参数传来的所有参数。
运行python脚本时,可以在脚本后面加上不同的命令行参数,这些参数会被作为一个列表存入sys.argv
中,其第一个元素是脚本文件的名称。
import sys print(sys.argv)
运行此脚本,可以看到输出为:
['test.py']
现在执行以下命令:
python test.py hello world
输出将会是:
['test.py', 'hello', 'world']
二、解析命令行参数
在实际开发中,我们需要根据需求对命令行参数进行解析和处理,argparse
是python自带的一个模块,可以让我们更加方便地进行命令行参数的解析。
首先,我们需要导入argparse
模块。
import argparse parser = argparse.ArgumentParser(description='This is a description of the program') parser.add_argument('-v', '--verbose', help='verbose information', action='store_true') parser.add_argument('-n', '--name', default='World', help='name to greet', type=str) args = parser.parse_args() if args.verbose: print('verbose mode enabled') print(f'Hello, {args.name}!')
在上述代码中,我们通过add_argument()
方法添加了两个命令行参数:-v/--verbose和-n/--name。
-v/--verbose参数会把args.verbose
置为True,同时输出verbose mode enabled;-n/--name参数需要一个额外参数,用来指定name的值,如果该参数没有输入,则默认值为“World”,程序会输出Hello, World!。如果命令行输入了-n 'python'这样的参数,则输出Hello, python!。
三、sys.argv与argparse的区别和使用场景选择
sys.argv
通常用于解析较为简单的命令行参数,比如想要获取用户输入的文件名,在命令行中输入:python your_script.py myfile.txt
,那么在脚本中,可以通过sys.argv[1]获取到myfile.txt,然后进行相应的文件操作。
argparse
则适用于对复杂命令行参数的解析和处理,比如一个程序有多个选项,且每个选项可能带有不同的参数。
选择合适的方式,可以让我们更加方便地开发和维护代码。