Python 的 sys.argv 属性是一个保存命令行参数的列表,它可以让我们在运行 Python 程序时直接将参数传入,并且可以通过修改这个列表来控制程序的行为,下面是有关 sys.argv 的详细讲解。
使用方法
我们可以通过导入 sys 模块来使用 sys.argv,这个模块提供了一个名为 argv 的列表,保存了命令行中传递的所有参数。在代码中可以通过 sys.argv[i] 来获取第 i 个参数的值,其中 i 从 0 开始计数,也就是说 sys.argv[0] 存储的是 Python 脚本本身的名称。
下面是一个简单的示例代码:
import sys
print("命令行参数有:", str(sys.argv))
for i in range(len(sys.argv)):
print("第", i, "个参数:", sys.argv[i])
运行这段代码的结果会像这样:
命令行参数有: ['test_arg.py', 'arg1', 'arg2', 'arg3']
第 0 个参数: test_arg.py
第 1 个参数: arg1
第 2 个参数: arg2
第 3 个参数: arg3
从输出结果可以看出,sys.argv 中存储的是字符类型的数组,可以通过下标来获取每个参数的值。
实例说明
下面给出两个实例,说明 sys.argv 在实际应用中的作用。
实例一
假设我们有一个程序需要读取一个文件名,并且对文件进行操作,这时候我们可以使用 sys.argv 来避免在代码中写死文件名。
比如下面这个示例程序:
import sys
if len(sys.argv) < 2:
print("请在命令行输入文件名")
sys.exit()
file_name = sys.argv[1]
try:
with open(file_name, "r") as f:
content = f.read()
except:
print("文件不存在或无法打开")
sys.exit()
# 对文件进行操作...
这个程序会从命令行中读取文件名,如果没有输入文件名,则提示用户需要在命令行中输入文件名,如果存在文件,则对文件进行操作。
实例二
假设我们需要用 Python 脚本执行某个外部命令,并且传递一些参数给命令,这时候我们可以使用 argparse 来解析命令行参数,并将其转换为 Python 中的变量,然后传递给需要执行的命令。
比如下面这个示例程序:
import sys
import argparse
from subprocess import call
parser = argparse.ArgumentParser(description='执行一个外部命令')
parser.add_argument('--cmd', type=str, help='命令名称', required=True)
parser.add_argument('--arg1', type=str, help='命令参数1', default=None)
parser.add_argument('--arg2', type=str, help='命令参数2', default=None)
args = parser.parse_args()
command = [args.cmd]
if args.arg1 is not None:
command.append(args.arg1)
if args.arg2 is not None:
command.append(args.arg2)
call(command)
这个程序使用 argparse 库来解析命令行参数,然后将参数传递给需要执行的命令。例如我们执行下面的命令:
python test_arg.py --cmd echo --arg1 "Hello World" --arg2 "from Python"
这个程序会执行 echo 命令,并将参数 "Hello World" 和 "from Python" 传递给这个命令,打印出 "Hello World from Python"。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解sys.argv(获取命令行参数)属性的使用方法 - Python技术站