Python脚本外部传参的四种常用方法:sys、argparse与argv详解

程一诺
程一诺
发布时间:2026-10-14| 2人浏览过
原创

本文详细介绍Python脚本在服务器部署或共享使用时接收外部参数的四种方法。通过sys模块进行流式文本处理,利用argparse模块实现带默认值、帮助文档的标准化参数解析,使用argv列表直接通过下标获取参数,以及结合argv与argparse进行高级封装。文章包含MySQL binlog分析与自动化部署的具体代码示例,帮助开发者根据场景选择最佳方案,提升脚本的兼容性与生产环境可用性。

前言

在实际开发中,编写的Python脚本往往需要频繁修改参数。当脚本被部署到服务器或分享给不具备编程背景的用户使用时,硬编码参数会带来极大的不便。若能将参数配置移至脚本外部指定,将大幅提升使用的便捷性。本文将介绍几种在Python中实现外部参数指定的常用方法。

一、流文本处理

该方法适用于需要处理文件内容并配合Linux命令的场景。例如,我们需要从一个binlog文件中提取最大的事务信息,通常会结合mysqldump工具进行操作:


mysqlbinlog  -v --base64-output=decode-row ./mysql-bin.000001 | python check_big_event.py

在此场景下,脚本仅需接收binlog文件路径作为输入。我们可以直接使用sys模块,将binlog文件以流式(逐行)方式传递给脚本,实现过程非常简洁。以下是示例脚本:

二、argparse 模块

Python内置的argparse模块是接收外部参数的标准工具,熟练运用后能极大提升脚本的专业性。以下是一个MySQL自动化部署脚本的示例,其中包含三个必须指定的参数,我们均可通过--参数名的方式在命令行中指定。


python MySQL_install.py --datadir=/data/mysql_db --basedir=/usr/local --path=mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz

以下是使用示例:当用户未指定任何参数时,脚本会自动打印帮助信息(help)。

示例格式如下:

采用这种方式传递参数,我们在运行脚本时只需按格式输入即可:


python args.py --path=xxx --log=xxx

该方法的优点显著:参数数量无限制,支持设置默认值,且具备极佳的兼容性与扩展性,强烈建议在生产环境中使用此方法。

三、argv 列表

这种方法简单直接,无需定义参数名称,直接通过下标索引即可获取参数值。演示如下:

运行结果:

指定参数时,使用空格分隔即可。其缺点在于必须严格按照脚本定义的顺序传入参数。如果脚本仅有一个参数或参数含义相同,可以使用此方法;但若参数较多,不建议使用这种方式,因为容易出错且难以维护。

四、argv + argparse

结合argv与argparse的优势在于能够实现脚本的高度封装,特别适用于参数较多的复杂场景。以下是一个演示示例:


import sys
import argparse


def parse_args():
    """parse args for test"""

    parser = argparse.ArgumentParser(add_help=False)
    connect_setting = parser.add_argument_group('connect setting')
    connect_setting.add_argument('-h', '--host', dest='host', type=str,
                                 help='Host the MySQL database server located', default='127.0.0.1')
    connect_setting.add_argument('-u', '--user', dest='user', type=str,
                                 help='MySQL Username to log in as', default='root')
    connect_setting.add_argument('-p', '--password', dest='password', type=str, nargs='*',
                                 help='MySQL Password to use', default='')
    connect_setting.add_argument('-P', '--port', dest='port', type=int,
                                 help='MySQL port to use', default=3306)

    return parser


def command_line_args(args):
    need_print_help = False if args else True
    parser = parse_args()
    args = parser.parse_args(args)

    if args.help or need_print_help:
        parser.print_help()
        sys.exit(1)
        
    return args


if __name__ == '__main__':
    args = command_line_args(sys.argv[1:])
    print(args.host)

以上即为Python脚本文件外部传递参数的处理方法详细内容,更多关于Python脚本外部传递参数的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。