Loading

终端执行python脚本,并使用终端输入的额外参数

在终端执行 Python 脚本时传递参数,最常用且标准的方法是使用 Python 内置的 argparse 模块。它功能强大,能自动处理参数解析、类型转换、生成帮助信息等,非常适合“普通的 Python 脚本”。

下面我将通过一个完整的例子,向你展示如何实现。

📜 1. 编写你的 Python 脚本

假设我们有一个名为 greet.py 的脚本,它需要接收一个必须的位置参数(名字)和一个可选的参数(问候语)。

# greet.py
import argparse

# 1. 创建 ArgumentParser 对象
# description 参数用于描述这个脚本是做什么的,会显示在帮助信息中
parser = argparse.ArgumentParser(description='一个简单的问候脚本。')

# 2. 添加参数
# 位置参数:用户必须提供,例如 'Alice'
parser.add_argument('name', type=str, help='要问候的名字')

# 可选参数:以 '--' 或 '-' 开头,例如 --greeting 或 -g
# default 设置了默认值,如果用户不提供此参数,就使用默认值
parser.add_argument('--greeting', '-g', type=str, default='你好', help='问候语 (默认: 你好)')

# 3. 解析参数
# parse_args() 方法会解析命令行参数,并将它们作为属性存储在 args 对象中
args = parser.parse_args()

# 4. 使用参数
print(f"{args.greeting}, {args.name}!")

💻 2. 在终端中执行并传参

编写好脚本后,你就可以在终端(命令行)中运行它,并传递不同的参数。

场景一:只传递必须的位置参数

python greet.py Alice

输出:

你好, Alice!

这里我们只提供了 name 参数,greeting 参数使用了默认值“你好”。

场景二:传递必须参数和可选参数

python greet.py Bob --greeting Hello

输出:

Hello, Bob!

这里我们同时提供了 name 和 --greeting 参数。

场景三:使用可选参数的短格式

python greet.py Charlie -g Hi

输出:

Hi, Charlie!

我们在定义参数时指定了 -g 作为 --greeting 的别名,所以可以这样简写。

❓ 3. 获取帮助信息

argparse 模块的一个巨大优势是它能自动生成帮助信息。你只需要在命令后面加上 -h 或 --help 参数。

python greet.py --help

输出:

usage: greet.py [-h] [--greeting GREETING] name

一个简单的问候脚本。

positional arguments:
  name                  要问候的名字

optional arguments:
  -h, --help            显示此帮助信息并退出
  --greeting, -g GREETING
                        问候语 (默认: 你好)

这对于你和任何其他使用你脚本的人来说都非常方便,无需查看源代码就能知道如何使用。

🔍 补充:更简单的 sys.argv 方法

对于极其简单的脚本,你也可以使用 sys.argv 来获取参数。它是一个列表,包含了所有命令行参数。

  • sys.argv[0] 是脚本名称。
  • sys.argv[1] 是第一个参数,以此类推。
# simple_script.py
import sys

# 获取第一个和第二个参数
name = sys.argv[1]
age = sys.argv[2]

print(f"你的名字是 {name},今年 {age} 岁。")

在终端执行:

python simple_script.py Alice 25

输出:

你的名字是 Alice,今年 25 岁。

注意:使用 sys.argv 时,你需要自己处理参数的数量、类型和错误,如果参数很多或逻辑复杂,代码会变得难以维护。因此,对于绝大多数情况,强烈推荐优先使用 argparse 模块。

posted @ 2026-03-06 15:08  DuKe渡客  阅读(84)  评论(0)    收藏  举报