Skip to content

Python命令行参数

在 Python 中,可以通过多种方式获取命令行参数或用户输入的参数。以下是几种常见的方法及其示例代码。

1. 使用 sys.argv 获取命令行参数

sys.argv 是一个包含命令行参数的列表。第一个元素是脚本名称(即 sys.argv[0]),后续元素是传递给脚本的参数。

示例代码

python
import sys

# 打印所有命令行参数
print(f"脚本名称: {sys.argv[0]}")
if len(sys.argv) > 1:
    print("命令行参数:")
    for i, arg in enumerate(sys.argv[1:], start=1):
        print(f"参数 {i}: {arg}")
else:
    print("未提供额外的命令行参数。")

运行示例

bash
python main.py arg1 arg2 arg3

输出示例

脚本名称: main.py
命令行参数:
参数 1: arg1
参数 2: arg2
参数 3: arg3

2. 使用 argparse 模块解析命令行参数

argparse 是一个强大的模块,用于定义和解析命令行参数。它支持位置参数、可选参数、默认值、帮助信息等功能。

示例代码

python
import argparse

# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description="示例程序:解析命令行参数")

# 添加位置参数
parser.add_argument("name", type=str, help="用户的名字")

# 添加可选参数
parser.add_argument("-a", "--age", type=int, default=18, help="用户的年龄 (默认: 18)")
parser.add_argument("-v", "--verbose", action="store_true", help="启用详细模式")

# 解析命令行参数
args = parser.parse_args()

# 使用解析后的参数
print(f"名字: {args.name}")
print(f"年龄: {args.age}")
if args.verbose:
    print("详细模式已启用")

运行示例

bash
python main.py Alice -a 25 --verbose

输出示例

名字: Alice
年龄: 25
详细模式已启用

3. 使用 input() 获取用户输入

如果需要在程序运行时动态获取用户输入,可以使用 input() 函数。

示例代码

python
# 获取用户输入
name = input("请输入你的名字: ")
age = input("请输入你的年龄: ")

# 输出结果
print(f"你好, {name}! 你今年 {age} 岁。")

运行示例

请输入你的名字: Alice
请输入你的年龄: 25

输出示例

你好, Alice! 你今年 25 岁。

4. 使用 configparser 读取配置文件

如果参数存储在配置文件中,可以使用 configparser 模块读取。

配置文件 (config.ini) 示例

ini
[user]
name = Alice
age = 25

示例代码

python
import configparser

# 创建 ConfigParser 对象
config = configparser.ConfigParser()

# 读取配置文件
config.read('config.ini')

# 获取参数
name = config.get('user', 'name')
age = config.getint('user', 'age')

# 输出结果
print(f"名字: {name}")
print(f"年龄: {age}")

输出示例

名字: Alice
年龄: 25

5. 使用环境变量获取参数

如果参数存储在环境变量中,可以使用 os.environ 获取。

示例代码

python
import os

# 获取环境变量
name = os.getenv("USER_NAME", "Guest")  # 默认值为 "Guest"
age = os.getenv("USER_AGE", 18)

# 输出结果
print(f"名字: {name}")
print(f"年龄: {age}")

设置环境变量

bash
export USER_NAME=Alice
export USER_AGE=25

运行示例

bash
python main.py

输出示例

名字: Alice
年龄: 25

6. 使用第三方库 click 简化命令行参数处理

click 是一个流行的第三方库,用于创建命令行工具。它提供了更简洁的语法和更多的功能。

安装 click

bash
pip install click

示例代码

python
import click

@click.command()
@click.option("--name", prompt="你的名字", help="用户的名字")
@click.option("--age", default=18, help="用户的年龄 (默认: 18)")
def main(name, age):
    """示例程序:获取用户信息"""
    click.echo(f"你好, {name}! 你今年 {age} 岁。")

if __name__ == "__main__":
    main()

运行示例

bash
python main.py --name Alice --age 25

输出示例

你好, Alice! 你今年 25 岁。

7. 总结

根据你的需求选择合适的方法:

  1. 简单场景
    • 使用 sys.argvinput()
  2. 复杂场景
    • 使用 argparseclick 处理命令行参数。
  3. 配置文件
    • 使用 configparser 读取配置文件。
  4. 环境变量
    • 使用 os.environ 获取环境变量。
最近更新