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脚本外部传递参数的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python进程,多进程,获取进程id,给子进程传递参数操作示例

    本文实例讲述了Python进程,多进程,获取进程id,给子进程传递参数操作.分享给大家供大家参考,具体如下: 线程与线程之间共享全局变量,进程之间不能共享全局变量. 进程与进程相互独立  (可以通过socket套接字实现进程间通信,可以通过硬盘(文件)实现进程通信,也可以通过队列(Queue)实现进程通信) 子进程会拷贝复制主进程中的所有资源(变量.函数定义等),所以子进程比子线程耗费资源. demo.py(多进程): import threading # 线程 import time impo

  • Jmeter调用Python脚本实现参数互相传递的实现

    接口性能测试时,接口请求参数是根据一定的规则拼接后进行MD5加密后再进行传参,因此借助于python脚本实现,则可以有效提升测试效率. 1.分析参数加密规则:NonceStr:时间戳 + 一个小于 1000 的随机数: Sign:"UserID=" + UserID+ "&" + "NonceStr=" + NonceStr + "固定的字符串": 其中UserID是上千个不同的数据已进行CSV文件参数化处理: 2.编

  • Python传递参数的多种方式(小结)

    一 位置传递 没什么好过多讲解. # 位置传递实例: def fun1(a,b,c): return a+b+c print(fun1(1,2,3)) 输出: 6 二 关键字传递 更具每个参数的名字写入函数参数 # 关键字传递 def fun2(a,b,c): return a+b+c print(fun2(1,c=3,b=2)) 输出: 6 三 参数默认值传递 给函数的输入参数设定一个默认值,如果该参数最终没有输入,则使用默认参数出入函数. # 默认值传递 def fun3(a,b=2,c=3

  • python 类之间的参数传递方式

    练手记录以及调试步骤. class A(object): def __init__(self,a="A"): print("enter",a) print("leave",a) def mainA(readA,*D): #如果使用实例化B(),调用mainA,D收集进来D多余的参数.(参考第3点说明) print("enter mainA") reaA = "内部添加的" print("leave

  • java 直接调用python脚本,并传递参数代码实例

    最近陆续用python写了很多文件处理脚本,虽然功能都比较简单 ,但还是感觉到python对文件处理的简洁高效 ,越发觉得java的语法相当的繁琐~ 接到个需求处理ftp数据接口 .所以想把python脚本也用上.java代码定时扫描ftp数据仓库 ,调用python脚本入库. 直接采用java执行系统命令的方式 @Async public void readFileByPython(List<String> filePaths) throws FileNotFoundException {

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

    前言 我们写的 Python 脚本需要修改参数,当我们将脚步上传到服务器或者给不会编程的人用时,会比较不方便,如果直接可以在外部指定参数,会非常方便,今天介绍的就是 Python 外部指定参数的几种方法. 一.流文本处理 这种方法适用于修改一下文件中的内容,配合 Linux 命令非常方便,举一个例子,我们需要从一个 binlog 文件中找到该里面最大的事物,我们要配合 mysqldump 来做: mysqlbinlog -v --base64-output=decode-row ./mysql-

  • Shell脚本函数传递参数的实现方法

    如何传递参数到Shell脚本函数 通常,在其他脚本语言中,您可以将参数和参数作为function_name(parameter1, parameter2,…)传递给函数,这在shell脚本函数中不支持.在shell脚本函数中,您可以在函数调用期间直接传递参数,而无需在函数定义中定义它们的名称,并直接使用位置参数 $1 作为第一个参数, $2 作为第二个参数,以此类推. 在shell脚本中定义函数有两种方法 function function_name { ... } OR function_na

  • Python脚本文件打包成可执行文件的方法

    将Python脚本文件包装成可执行文件,其目的有二: 一则: 不需要依赖Python编译器就可以运行软件 二则: 不想让自己的源码公布出去 常用的工具有: py2exe.cx_freeze等 [工具:py2exe] 安装py2exe 安装该工具很简单: 只需要从官方网站:http://www.py2exe.org/下载与版本对应的安装程序,点击下一步即可完成安装. 安装后,执行import py2exe,不报错则表示安装成功! 复制代码 代码如下: >>> import py2exe 

  • python 执行文件时额外参数获取的实例

    如下所示: def usage(): print(' * usage:') print(' * -c [val] : exporter_conf filepath, default importer_conf.') print(' * -h : print this.') print(' * -z : 不需要确认参数,直接执行') do_not_confirm = False conf = '' #c: [c+冒号表示-c 后面有参数,hz表示-h,-z后面没参数,如果此时在-h 100加上参数

  • 调用其他python脚本文件里面的类和方法过程解析

    这篇文章主要介绍了调用其他python脚本文件里面的类和方法过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 问题描述: 自己编写了若干个Python脚本. 在testC.py里面需要调用testA.py和testB.py里面的若干类和方法.要怎么办? 需要都打包.安装,再去调用吗? 其实不必那么麻烦. 这里有个前提,testA.py, testB.py, testC.py在同级目录下. 如果不在同级目录,后面会补充介绍如何把路径包含过来

  • Python实现解析命令行参数的常见方法总结

    目录 简介 基本形式 3种常见的获取和解析命令行参数的方法 sys.argv案例 案例源码1 案例源码2 案例1 案例2 案例3 案例4 简介 除ide的执行方式外,命令行的方式执行Python脚本是参数化程序执行的一种常见且简单的方法,正确处理命令行参数,可以提供给包含某种参数化信息的程序或脚本的参数.例如处理目录或者文件通常作为命令行参数传递给脚本,用于使程序可以处理不同图片或者不同类型文件. 基本形式 python main.py -a v1 -b v2 ... 3种常见的获取和解析命令行

  • python下载文件时显示下载进度的方法

    本文实例讲述了python下载文件时显示下载进度的方法.分享给大家供大家参考.具体分析如下: 将这段代码放入你的脚本中,类似:urllib.urlretrieve(getFile, saveFile, reporthook=report) 第三个参数如下面的函数定义report,urlretrieve下载文件时会实时回调report函数,显示下载进度 def report(count, blockSize, totalSize): percent = int(count*blockSize*10

  • Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)

    使用Python过程中,经常需要对文件和目录进行操作.所有file类/os/os.path/shutil模块时每个Python程序员必须学习的. 下面通过两段code来对其进行学习. 1. 学习 file对象 2. 学习os/os.path/shutil模块 1.file对象学习: 项目中需要从文件中读取配置参数,python可以从Json,xml等文件中读取数据,然后转换成Python的内容数据结构. 下面以Json文件为例,实现从Json文件中获取配置参数. code运行环境:python2

  • python实现文件路径和url相互转换的方法

    本文实例讲述了python实现文件路径和url相互转换的方法.分享给大家供大家参考.具体实现方法如下: import urllib pathname = 'path/to/file/or/folder/' url = urllib.pathname2url(pathname) pathname = urllib.url2pathname(url) print pathname 运行结果如下: path\to\file\or\folder\ 希望本文所述对大家的Python程序设计有所帮助.

随机推荐