当前位置:首页 > Linux > 正文

如何在Linux中给Python脚本传参?

在Linux中,Python脚本可通过命令行传递参数,使用 sys.argv获取基础参数列表,或通过 argparse模块创建高级命令行接口,支持参数解析、类型验证和帮助文档生成。

在Linux环境下,Python脚本的参数传递是自动化任务和脚本开发的核心技能,以下是五种专业、高效且符合生产标准的传参方法,结合最佳实践和安全性建议:


命令行参数(sys.argv

适用场景:快速获取简单参数
原理:通过sys模块读取终端输入的参数列表

import sys
if len(sys.argv) > 1:
    print("参数1:", sys.argv[1])  # 索引0是脚本名
else:
    print("未传递参数")

执行命令

python3 script.py value1

注意

  • 需手动验证参数数量(len(sys.argv)
  • 无类型校验,复杂场景不推荐

argparse模块(官方推荐)

适用场景:复杂参数、类型校验、帮助文档生成
优势:自动生成--help文档,支持类型/范围检查

如何在Linux中给Python脚本传参?  第1张

import argparse
parser = argparse.ArgumentParser(description='处理用户数据')
parser.add_argument('--user', type=str, required=True, help='用户名')
parser.add_argument('--age', type=int, default=20, help='年龄(默认20)')
parser.add_argument('--verbose', action='store_true', help='启用详细输出')
args = parser.parse_args()
print(f"用户: {args.user}, 年龄: {args.age}, 详细模式: {args.verbose}")

执行命令

python3 script.py --user Alice --age 25 --verbose

环境变量传参(os.environ

适用场景:敏感信息(如API密钥)、容器化部署
原理:从系统环境变量读取参数

import os
api_key = os.environ.get('API_KEY')
if not api_key:
    raise ValueError("未设置API_KEY环境变量")
print("API密钥:", api_key)

配置环境变量

export API_KEY="your-secret-key"  # 临时生效
python3 script.py
# 永久生效:写入~/.bashrc或/etc/environment

配置文件传参(JSON/YAML)

适用场景:多参数、跨环境配置
示例(JSON)

import json
with open('config.json') as f:
    config = json.load(f)
    print("数据库地址:", config['db_host'])

配置文件config.json

{
    "db_host": "192.168.1.100",
    "db_port": 5432,
    "debug_mode": true
}

管道传参(sys.stdin

适用场景:脚本间数据流传递
原理:通过接收前序命令的输出

import sys
data = sys.stdin.read().strip()  # 读取管道数据
print("接收到的数据:", data)

执行命令

echo "Hello from Pipe" | python3 script.py

安全与最佳实践

  1. 敏感数据保护
    • 永远不在命令行直接传递密码(会被ps命令捕获)
    • 使用环境变量或加密配置文件(如Vault)
  2. 参数校验
    • argparse限制类型/范围(如type=int, choices=[1,2,3]
    • 对文件路径用os.path.exists()验证
  3. 容器化支持

    环境变量是Docker/K8s的最佳传参方式

  4. 错误处理
    • 捕获argparse.ArgumentError
    • 为必需参数设置required=True

方法对比

方法 适用场景 安全性 易用性
sys.argv 简单临时任务
argparse 生产环境复杂参数
环境变量 敏感信息/容器化 极高
配置文件 多环境部署
管道 脚本流水线

引用说明

  • Python官方文档:argparse模块[^1]
  • Linux环境变量管理:IEEE POSIX标准[^2]
  • 安全实践:OWASP安全配置指南[^3]

[^1]: Python argparse Documentation
[^2]: IEEE Std 1003.1-2017 Environment Variables
[^3]: OWASP Secure Configuration Guide

0