Python脚本文件外部传递参数的处理方法

 更新时间:2021年05月27日 09:19:53   作者:文若oO  
Python 自带的接收外部参数的模块,用好以后也是非常的猴赛雷。文章通过一个MySQL 自动化部署脚本,需要指定的参数有三个,我们均可以使用 --参数名 方式来指定,会非常方便,今天介绍的就是 Python 外部指定参数的几种方法,感兴趣的朋友一起看看吧

前言

我们写的 Python 脚本需要修改参数,当我们将脚步上传到服务器或者给不会编程的人用时,会比较不方便,如果直接可以在外部指定参数,会非常方便,今天介绍的就是 Python 外部指定参数的几种方法。

一、流文本处理

这种方法适用于修改一下文件中的内容,配合 Linux 命令非常方便,举一个例子,我们需要从一个 binlog 文件中找到该里面最大的事物,我们要配合 mysqldump 来做:

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

此时我们需要给脚步的参数就只有 binlog 文件路径,那就可以直接使用 sys 将 binlog 文件以流式(一行一行)传递给脚步,非常简单就可以实现,下方是示例脚本👇
在这里插入图片描述

二、argparse 模块

Python 自带的接收外部参数的模块,用好以后也是非常的猴赛雷。下面是一个 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字符串不可变数据类型

    python字符串不可变数据类型

    这篇文章主要介绍了python字符串不可变数据类型,下文关于python字符串不可变数据类型相关资料展开的内容主要有查找子串及数量、字符串的替换、分割以及合并、删除侧边的空白等内容,需要的小伙伴可以参考一下
    2022-02-02
  • Python实现隐马尔可夫模型的前向后向算法的示例代码

    Python实现隐马尔可夫模型的前向后向算法的示例代码

    这篇文章主要介绍了Python实现隐马尔可夫模型的前向后向算法,本文通过实例代码给大家讲解的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 如何卸载python插件

    如何卸载python插件

    在本篇文章里小编给大家分享了关于python插件如何卸载的相关文章,需要的朋友们可以参考下。
    2020-07-07
  • Python中的切片函数Slice详解

    Python中的切片函数Slice详解

    这篇文章主要介绍了Python中的切片函数Slice详解,切片是对有序的集合而言,意思从有序集合里提取数据构成子集集合,给定提取的起点start、终点end以及方向上的步长step,能否切出非空子集,起点start需能沿步长方向上到达终点,需要的朋友可以参考下
    2023-09-09
  • 浅析Python中的赋值和深浅拷贝

    浅析Python中的赋值和深浅拷贝

    Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。接下来通过本文给大家分享Python中的赋值和深浅拷贝,感兴趣的朋友一起看看吧
    2017-08-08
  • widows下安装pycurl并利用pycurl请求https地址的方法

    widows下安装pycurl并利用pycurl请求https地址的方法

    今天小编就为大家分享一篇widows下安装pycurl并利用pycurl请求https地址的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python Unittest ddt数据驱动的实现

    Python Unittest ddt数据驱动的实现

    本文主要介绍了Python Unittest ddt数据驱动的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python判断操作系统类型代码分享

    Python判断操作系统类型代码分享

    这篇文章主要介绍了Python判断操作系统类型代码分享,编写一些跨平台程序时经常要用到,需要的朋友可以参考下
    2014-11-11
  • Flask运用Xterm实现交互终端的示例详解

    Flask运用Xterm实现交互终端的示例详解

    Xterm是一个基于X Window System的终端仿真器(Terminal Emulator),Xterm最初由MIT开发,它允许用户在X Window环境下运行文本终端程序,本文给大家介绍了Flask运用Xterm实现交互终端的示例详解,文中有详细的代码讲解,需要的朋友可以参考下
    2023-11-11
  • Pygame实战练习之一百层游戏

    Pygame实战练习之一百层游戏

    跳上一百层想必是很多人童年时期的经典游戏,我们依旧能记得抱个老人机娱乐的场景,下面这篇文章主要给大家介绍了关于如何利用python写一个简单的跳上一百层小游戏的相关资料,需要的朋友可以参考下
    2021-09-09

最新评论