您的位置:

Python sys.argv:命令行参数获取与解析

一、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则适用于对复杂命令行参数的解析和处理,比如一个程序有多个选项,且每个选项可能带有不同的参数。

选择合适的方式,可以让我们更加方便地开发和维护代码。