[python]sys.argv

271 阅读3分钟

在 Python 中执行脚本时,可以通过命令行参数(也称为命令行参数或命令行选项)来传递输入参数。

Python 提供了一个内置模块 sys,其中 sys.argv 列表可以用来访问这些命令行参数。此外,argparse 模块提供了更为强大和灵活的方式来处理命令行参数。

1/使用 sys.argv

sys.argv 是一个列表,其中第一个元素是脚本的名称,随后的元素是传递给脚本的命令行参数。

切记, 第一个元素是你要执行的脚本的名称,index=0是你要执行的脚本的名称xxxx.py

index=1,才是你实际传入的第一个参数


import sys  


# 打印所有命令行参数  

for i, arg in enumerate(sys.argv):  
    print(f"Argument {i}: {arg}")  

# 访问特定的命令行参数  

if len(sys.argv) > 1:  

    first_arg = sys.argv[1]  

    print(f"First argument: {first_arg}")

如何运行:

python script.py arg1 arg2 arg3

执行结果:

Argument 0: script.py
Argument 1: arg1
Argument 2: arg2
Argument 3: arg3
First argument: arg1

2/使用 argparse

argparse 模块允许你以更结构化的方式定义和解析命令行参数。

import argparse  
  
# 创建 ArgumentParser 对象  
parser = argparse.ArgumentParser(description="示例脚本,用于展示如何使用 argparse 处理命令行参数。")  
  
# 添加命令行参数  
parser.add_argument("first_arg", type=str, help="第一个参数")  
parser.add_argument("second_arg", type=int, help="第二个参数(整数)")  
parser.add_argument("--optional_arg", type=float, default=0.0, help="可选参数(浮点数),默认值为 0.0")  
  
# 解析命令行参数  
args = parser.parse_args()  
  
# 打印解析后的参数  
print(f"First argument: {args.first_arg}")  
print(f"Second argument: {args.second_arg}")  
print(f"Optional argument: {args.optional_arg}")

如何执行

python script.py hello 123 --optional_arg 45.67

执行结果

First argument: hello
Second argument: 123
Optional argument: 45.67

总结

  • sys.argv 提供了基本的命令行参数访问功能,但缺乏结构化和灵活性。
  • argparse 提供了强大的命令行参数解析功能,适用于更复杂的场景。

根据你的具体需求选择合适的方法来处理命令行参数。

介绍

sys.argv 是 Python 中的一个列表(list),它包含了命令行参数(command-line arguments)。这个列表是由 Python 的 sys 模块提供的,因此在使用之前需要导入 sys 模块。sys.argv 的第一个元素(sys.argv[0])是脚本的名称,随后的元素是传递给脚本的参数。

使用方法

导入 sys 模块:
在使用 sys.argv 之前,首先需要导入 Python 的 sys 模块。

python

import sys

访问命令行参数: 通过索引访问 sys.argv 列表中的元素,可以获取到命令行参数。

sys.argv[0]:脚本的名称。
sys.argv[1]:传递给脚本的第一个参数。
sys.argv[2]:传递给脚本的第二个参数,以此类推。

示例: 假设有一个名为 script.py 的脚本,内容如下:

python

import sys

print("脚本名称:", sys.argv[0])
for i in range(1, len(sys.argv)):

print("参数", i, ":", sys.argv[i])

如果在命令行中运行这个脚本并传递一些参数,比如:

bash

python script.py arg1 arg2 arg3

输出将会是:

脚本名称: script.py
参数 1 : arg1
参数 2 : arg2

参数 3 : arg3

注意事项

索引越界:如果尝试访问 sys.argv 中不存在的索引,比如 sys.argv[10] 而只传递了两个参数,将会引发 IndexError。
空列表:如果没有传递任何参数给脚本(除了脚本名称本身),sys.argv 将只包含脚本名称,即 sys.argv 的长度为 1。
参数解析:对于复杂的参数解析需求,可能需要使用专门的库,如 argparse,它提供了更强大和灵活的参数解析功能。

sys.argv 是处理命令行参数的基本工具,对于简单的脚本和程序来说非常有用。