python脚本中如何从外部传递参数的处理方法

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

1. 流文本处理

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

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

2. argparse 模块

Python 自带的接收外部参数的模块,用好以后也是非常的猴赛雷。下面是一个 MySQL 自动化部署脚步,需要指定的参数有三个,我们均可以使用 --参数名 方式来指定。

parser = argparse.ArgumentParser(description='CAN signal sending tool test')   #创建一个解析器parser
# parser.add_argument('-dbc','--dbcfile', type=str,action=DBC_LoadandParse, help='加载并解析dbc文件')    #放入主函数流程中。为解析器添加参数
parser.add_argument('-dbc','--dbc_filename',type=str,default=config["dbc_filename"],required=False,help='which dbc_file do you want to test?')
parser.add_argument('-v','--vehicle_speed',type=int,default=config["current_speed"],required=False, help='setting vehicle speed' )         #设置当前状态
parser.add_argument('-t','--turning_switch',type=int,default=config["current_turning"],choices=[0,1,2],required=False,help='setting turning_signalswitch')
parser.add_argument('-b','--brake_switch',type=int,default=config["current_brake"],choices=[0,1],required=False,help='setting brakeswitch choices')
parser.add_argument('-g','--current_gear',type=int,default=config["current_gear"],required=False, help='setting currentgear signal')
parser.add_argument('-w','--wiper_switch',type=int,default=config["current_wiper"],choices=[0,1,2,3],required=False,help='setting wiperswitch signal') 
# parser.add_argument('--sum', dest='accumulate', action='store_const',const=sum, default=max,help='sum the integers (default: find the max)')
args = parser.parse_args()   #加入解析参数
print(args)       #获取传入的参数

优点非常多,指定参数没有数量限制,可以设置默认,兼容性 和 扩展性非常好,生产推荐使用该方法。

3. argv 列表

这种方法非常简单直接,不需要指定参数名,直接使用下标来取参数,

指定参数时,使用空格隔开就可以,缺点是我们必须安装脚步顺序指定,如果脚本只有一个参数或者参数意义相同,可以用这种方法,参数较多不建议使用。

4. 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)

参考链接:https://www.jb51.net/article/213384.htm
https://blog.csdn.net/haohulala/article/details/108972335

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨猪起飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值