python脚本传参

  • sys.argv
  • argparse

 第一种:argparse

简单使用:

import argparse # 创建一个参数解析实例
parser = argparse.ArgumentParser(description='Parameters') # 添加参数解析
parser.add_argument('--training_epoch', type=int, default=3000)
parser.add_argument('--learning_rate', type=float, default=0.001)
parser.add_argument('--model_name', type=str, default='lstm')# 开始解析args = parser.parse_args(args=[]) # 输出参数
print({args})
print(args.training_epoch)
print(args.learning_rate)
print(args.model_name)

parser.add_argument('--go', help='input file path')

name or flags:
普通参数或flag参数选项参数的名称或标签,例如 epochs 或者 -e, --epochs。Flag参数不需要指定参数值,只需要带有参数名即可。
action: 命令行遇到flags参数时的动作。有两个常见的动作,store_true:设定flag参数为true;-store_false:设定flag参数为False。注意:如果直接运行程序,默认不读取该变量,要使用必须要进行传参,例如:python try.py --epochs
nargs: 应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
default: 不指定参数时该参数的默认值。
type: 命令行参数应该被转换成的数据类型。
required: 是否为必选参数或可选参数。
help: 参数的帮助信息。
metavar: 在 usage 说明中的参数名称,对于必选参数,默认就是参数名称,对于可选参数默认是全大写的参数名称。
dest: 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
choices: 参数可允许的值的一个容器。
const: action 和 nargs 所需要的常量值。
store_const:表示赋值为const;
append:将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
append_const:将参数规范中定义的一个值保存到一个列表;
count:存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
 

可以给KerasReadModel.py直接控制台传参数:

import argparse
parser = argparse.ArgumentParser()
## nargs='+'接受1个或多个参数,
## nargs='*'接受零个或多个
parser.add_argument('--list', nargs='+', help='<Required> Set flag', required=True)
args = parser.parse_args()if __name__ == '__main__':print(args.list)

运行结果如下:

 

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--ll', action='append', help='<Required> Set flag', required=True)
args = parser.parse_args()if __name__ == '__main__':print(args.ll)

 运行示例及结果:

亲测:讲文件KerasReadModel.py进行打包KerasReadModel.exe,然后控制台传入参数

import tensorflow as tf
from sklearn.preprocessing import StandardScaler
import argparse
import numpy as npdef readModel():parser = argparse.ArgumentParser()parser.add_argument('--test_data', type=float, nargs='+', required=True)args = parser.parse_args()test_array = np.array(args.test_data)  # 将传入的list转为array类型print('test_array:',test_array)ne_test_array=test_array.reshape(1,7).tolist()print('ne_test_array:', ne_test_array)# data_x = [[1, 80, 170, 50, 370, 79.3, 0]]sc = StandardScaler()x_data = sc.fit_transform(ne_test_array)new_model = tf.keras.models.load_model('./saved_model/blood_model', compile=False,custom_objects={"TrajGRUCell": 'TrajGRUCell', "TrajGRU": 'TrajGRU'})y_pred = new_model.predict(x_data)print(y_pred)if __name__ == "__main__":readModel()

 注意reshape用法记录一下:

# numpy中reshape函数的三种常见相关用法
#
# reshape(1,-1)转化成1行:
#
# reshape(2,-1)转换成两行:
#
# reshape(-1,1)转换成1列:
#
# reshape(-1,2)转化成两列
# 如果一个 ndarray 有 个元素,那么它的 reshape(-1, 1, 2) 方法将返回一个 shape = (n, 1, 2) 的 ndarray.

打包文件和模型放到一起:

 

控制台执行命令:

E:\开发工具\pythonProject\flaskTest\dist>KerasReadModel.exe --test_data 0 80 170 50 370 79 0
 

 

成功!

 第二种:sys.args

实际测试,传递列表

def readModel():test_data=sys.argv[1:]print('test_data:', test_data)test_array = np.array(test_data)  # 将传入的list转为array类型print('test_array:',test_array)ne_test_array=test_array.reshape(1,7).tolist()# data_x = [[1, 80, 170, 50, 370, 79.3, 0]]sc = StandardScaler()x_data = sc.fit_transform(ne_test_array)new_model = tf.keras.models.load_model('./saved_model/blood_model', compile=False,custom_objects={"TrajGRUCell": 'TrajGRUCell', "TrajGRU": 'TrajGRU'})y_pred = new_model.predict(x_data)print(y_pred)if __name__ == "__main__":readModel()
(venv) E:\开发工具\pythonProject\flaskTest>KerasReadModel.py 1 80 170 50 370 79.3 0

 

详细用法来自网上:

一、sys.argv[0]
sys.argv[0] 用来获取执行的脚本名称。 

# test.py
import sysdef receive_args():file_name = sys.argv[0]print file_namereceive_args()执行结果:
#python test.py 
test.py

二、sys.argv[:]
sys.argv[:]用来获取参数列表,注意sys.argv[1:]这样可以去掉脚本名称

import sysdef receive_args():file_name = sys.argv[0]all_args = sys.argv[:]print file_nameprint all_argsreceive_args()#python test.py "2023-03-14" "liming" "shopping"
test.py
['test.py', '2023-03-14', 'liming', 'shopping']

 三、sys.argv[n]
n 代表数字1,2,3… 表示第几个参数,用来获取指定参数

import sysdef receive_args():file_name = sys.argv[0]all_args = sys.argv[:]time = sys.argv[1]who = sys.argv[2]do_what = sys.argv[3]print file_nameprint all_argsprint timeprint whoprint do_whatreceive_args()#python test.py "2023-03-14" "liming" "shopping"
test.py
['test.py', '2023-03-14', 'liming', 'shopping']
2023-03-14
liming
shopping

 四、利用列表其他属性
下面仅使用append()方法

import sysdef receive_args():file_name = sys.argv[0]all_args = sys.argv[:]time = sys.argv[1]who = sys.argv[2]do_what = sys.argv[3]print file_nameprint all_argsprint timeprint whoprint do_whatall_args.append("morning")print all_argsreceive_args()#python test.py "2023-03-14" "liming" "shopping"
test.py
['test.py', '2023-03-14', 'liming', 'shopping']
2023-03-14
liming
shopping
['test.py', '2023-03-14', 'liming', 'shopping', 'morning']

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/222812.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu20 安装缺失的字体

在/usr/share/fonts创建文件夹winfonts sudo mkdir winfonts 下载缺失的字体后&#xff0c;复制命令到对应的文件夹。 刷新字体库 sudo mkfontscale sudo mkfontdir sudo fc-cache

自然语言处理(NLP):理解语言,赋能未来

目录 前言1 什么是NLP2 NLP的用途3 发展历史4 NLP的基本任务4.1 词性标注&#xff08;Part-of-Speech Tagging&#xff09;4.2 命名实体识别&#xff08;Named Entity Recognition&#xff09;4.3 共指消解&#xff08;Co-reference Resolution&#xff09;4.4 依存关系分析&am…

芯片到底是怎么访问外设

微型计算机的组成&#xff1a;CPURAM硬盘等 什么是FLASH&#xff1f; FLASH存储器又称闪存&#xff0c;它结合了ROM和RAM的长处&#xff0c;不仅具备电子可擦除可编程&#xff08;EEPROM&#xff09;的性能&#xff0c;还不会断电丢失数据同时可以快速读取数据&#xff08;NV…

Layui 2.9.2 列表商品展示页 用模板引擎 laytpl Ajax 读取json 数据 筛选数组 filter css 限制文体显示过长用。。。代替

全代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>软件管理器</title><meta name"renderer" content"webkit"><meta http-equiv"X-UA-Compatible" conten…

宝塔面板安装MySQL数据库并通过内网穿透工具实现公网远程访问

文章目录 前言1.Mysql 服务安装2.创建数据库3.安装 cpolar3.2 创建 HTTP 隧道 4.远程连接5.固定 TCP 地址5.1 保留一个固定的公网 TCP 端口地址5.2 配置固定公网 TCP 端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了 Linux 命令行进行繁琐的配置,下面简单几步,通…

Github入门

简介 github是一个基于git的代码仓库&#xff0c;可以通过git来上传和下载代码。国内类似的有gitee。 开源项目一般会申明开源协议。我们可以基于可商用的代码开发我们自己的项目&#xff0c;以期进行快速开发。 一般情况下gitee上的项目基本都够我们使用了。 git基础 Git…

牛客小白月赛78(C: 第K小表示数)

C-第K小表示数_牛客小白月赛78 (nowcoder.com) 问题&#xff1a; 分析: k的极限是1e6,因此要几乎O(n)的时间复杂度给求出来&#xff0c;还需要每插入一个元素我都要去排序&#xff0c;这个时候set就派上用场了&#xff0c;自带排序和去重,集合里面最小和第二小的一定是min(a…

java设计模式学习之【责任链模式】

文章目录 引言责任链模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用日志示例代码地址 引言 在现实生活中&#xff0c;常常会遇到这样的场景&#xff1a;一个请求或命令需要经过多个层级的处理。例如&#xff0c;一个行政审批流程可能需要通过多个部门的审…

跨平台应用程序开发软件,携RAD Studio 12新版上线

RAD Studio 是一款专为程序员而准备的跨平台应用程序开发软件&#xff0c;内置Delphi和CBuilder这两种开发工具&#xff0c;另外还提供了新的C功能&#xff0c;扩展了对ExtJS的RAD服务器支持&#xff0c;增强了对vcL的高dpi支持&#xff0c;提高了firemonk (FMX)的质量等等&…

<软考高项备考>《论文专题 - 24 整合管理(2) 》

3 过程2-制订项目管理计划 3.1 问题 4W1H过程1-制定项目章程做什么定义、准备和协调项目计划的所有组成部分&#xff0c;并把它们整合为一份综合项目管理计划的过程&#xff1b;作用&#xff1a;生成一份综合文件&#xff0c;用于确定所有项目工作的基础及其执行方式为什么做…

106 uni-app 小程序之巨坑 not found path,not found methods v-for渲染出现报错

1.Component is not found in path 你是否像我一样&#xff0c;检查了无数遍&#xff0c;引入路径检查千万遍&#xff0c;就是没写错&#xff0c;小程序后台就是给你报错&#xff0c; 不用慌&#xff0c;心里默念&#xff1a;我不能砸电脑&#xff0c;我不能砸电脑&#xff0…

C# WPF上位机开发(QT vs WPF)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 最近经常收到朋友们的私信&#xff0c;他们对C# WPF开发很感兴趣&#xff0c;但是呢&#xff0c;正当准备学习的时候&#xff0c;又有人告诉他们应…

27 redis 的 sentinel 集群

前言 redis 的哨兵的相关业务功能的实现 哨兵的主要作用是 检测 redis 主从集群中的 master 是否挂掉, 单个哨兵节点识别 master 下线为主管下线, 超过 quorum 个 哨兵节点 认为 master 挂掉, 识别为 客观下线 然后做 failover 的相关处理, 重新选举 master 节点 我们这里…

ARM作业1

汇编实现三个灯闪烁 汇编代码&#xff1a; .text .global _start _start: 设置GPIOE,GPIOF时钟使能LDR R0,0X50000A28 LDR R1,[R0] ORR R1,R1,#(0x3<<4) STR R1,[R0] 设置PE10,PF10,PE8为输出 LED1LDR R0,0X50006000LDR R1,[R0]ORR R1,R1,#(0X1<<20)BIC R1…

依托亚马逊云科技构建韧性应用

背景 现代业务系统受到越来越多的韧性相关的挑战&#xff0c;特别是客户要求他们的业务系统 724 不间断的运行。因此&#xff0c;韧性对于云的基础设施和应用系统有着至关重要的作用。 亚马逊云科技把韧性视为一项最基本的工作&#xff0c;为了让我们的业务系统能持续优雅地提供…

【Grafana】Grafana匿名访问以及与LDAP连接

上一篇文章利用Docker快速部署了Grafana用来展示Zabbix得监控数据&#xff0c;但还需要给用户去创建账号允许他们登录后才能看展示得数据&#xff0c;那有什么办法让非管理员更方便得去访问Grafana呢&#xff1f;下面介绍两个比较方便实现的&#xff1a; 在开始设置前&#xff…

java练习题之多态练习

1:关于多态描述错误的是(D) A. 父类型的引用指向不同的子类对象 B. 用引用调用方法&#xff0c;只能调用引用中声明的方法 C. 如果子类覆盖了父类中方法&#xff0c;则调用子类覆盖后的方法 D. 子类对象类型会随着引用类型的改变而改变 2:class Super{ public void m1(){}…

前端学习——vuex的入门

学习一门技术最快捷的方式就是先了解其概念和使用场景&#xff0c;毕竟任何技术的出现都是为了解决某一个场景下的通用解决方案&#xff0c;并且使用最合理的方式去解决问题。 那么什么是vuex&#xff1f; Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库。它采用集中…

MATLAB Mobile - 使用预训练网络对手机拍摄的图像进行分类

系列文章目录 前言 此示例说明如何使用深度学习对移动设备摄像头采集的图像进行分类。 在您的移动设备上安装和设置 MATLAB Mobile™。然后&#xff0c;从 MATLAB Mobile 的“设置”登录 MathWorks Cloud。 在您的设备上启动 MATLAB Mobile。 一、在您的设备上安装 MATLAB M…

3. 行为模式 - 迭代器模式

亦称&#xff1a; Iterator 意图 迭代器模式是一种行为设计模式&#xff0c; 让你能在不暴露集合底层表现形式 &#xff08;列表、 栈和树等&#xff09; 的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 尽管如此&#xff0c; 集合只是一组对象的…