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 np

def 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 sys

def receive_args():
    file_name = sys.argv[0]
    print file_name

receive_args()

执行结果:
#python test.py 
test.py

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

import sys

def receive_args():
    file_name = sys.argv[0]
    all_args = sys.argv[:]
    print file_name
    print all_args

receive_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 sys

def 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_name
    print all_args
    print time
    print who
    print do_what

receive_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 sys

def 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_name
    print all_args
    print time
    print who
    print do_what
    all_args.append("morning")
    print all_args


receive_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']

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flutter + firebase 云消息通知教程 (android-安卓、ios-苹果)

如果能看到这篇文章的 一定已经对手机端的 消息推送通知 有了一定了解。 国内安卓厂商这里不提都有自己的FCM 可自行查找。&#xff08;国内因无法科学原因 &#xff0c;不能使用谷歌服务&#xff09;只说海外的。 目前 adnroid 和 ios 推送消息分别叫 FCM 和 APNs。这里通过…

flutter开发windows应用的库

一、window_manager 这个插件允许 Flutter 桌面应用调整窗口的大小和位置 地址&#xff1a;https://github.com/leanflutter/window_manager二、win32 一个包&#xff0c;它使用FFI包装了一些最常见的Win32 API调用&#xff0c;使Dart代码可以访问这些调用&#xff0c;而不需…

华为交换机配置BGP的基本示例

BGP简介 定义 边界网关协议BGP&#xff08;Border Gateway Protocol&#xff09;是一种实现自治系统AS&#xff08;Autonomous System&#xff09;之间的路由可达&#xff0c;并选择最佳路由的距离矢量路由协议。早期发布的三个版本分别是BGP-1&#xff08;RFC1105&#xff0…

Python+Playwright自动化测试--playwright处理浏览器多窗口切换

1.简介 浏览器多窗口的切换问题相比大家不会陌生吧&#xff0c;之前小编在javaselenium系列文章中就有介绍过。大致步骤就是&#xff1a;使用selenium进行浏览器的多个窗口切换测试&#xff0c;如果我们打开了多个网页&#xff0c;进行网页切换时&#xff0c;我们需要先获取各…

Ubuntu 常用命令之 history 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 history命令在Ubuntu系统中用于显示用户执行过的命令列表。这个命令在bash shell中非常有用&#xff0c;特别是当你需要记住你之前执行过的命令时。 history命令的参数如下 -c&#xff1a;清除历史记录。-d offset&#xff1a;删…

突破性能瓶颈:使用Asyncio构建高并发Python应用程序

是一种处理多个任务同时执行的编程方式&#xff0c;在Python中&#xff0c;asyncio是一种用于实现异步编程的强大工具。asyncio基于协程&#xff08;coroutine&#xff09;的概念&#xff0c;能够高效地处理I/O密集型任务。本文将介绍asyncio的基本原理和使用方法。 为啥需要a…

Nature Commun.:物理所揭示原子分辨下的铁电涡旋畴的原位力学转变过程

通过复杂的晶格-电荷相互作用形成的铁电涡旋畴在纳米电子器件研发中具有巨大的应用潜力。实际应用中&#xff0c;如何在外界激励下操纵这类结构的拓扑状态是至关重要的。中国科学院物理研究所/北京凝聚态物理国家研究中心表面物理国家重点实验室与北京大学、湘潭大学和美国宾夕…

云原生文件存储 CFS 线性扩展到千亿级文件数,百度沧海·存储论文被 EuroSys 2023 录用

恭喜百度沧海云存储和中科大合作的论文《CFS: Scaling Metadata Service for Distributed File System via Pruned Scope of Critical Sections》&#xff08;以下简称论文&#xff09;被 EuroSys 2023 录用。 EuroSys 全称欧洲计算机系统会议&#xff08;The European Confer…

ROS2 学习09--ros 中的通信接口的定义以及如何创建自定义msg、srv和action文件

在ROS系统中&#xff0c;无论话题还是服务&#xff0c;或者我们后续将要学习的动作&#xff0c;都会用到一个重要的概念——通信接口。 通信并不是一个人自言自语&#xff0c;而是两个甚至更多个人&#xff0c;你来我往的交流&#xff0c;交流的内容是什么呢&#xff1f;为了让…

【收藏】法律人办案必备检索网站最新汇总!附检索技巧

为什么要进行法律检索?无论你擅长的是做诉讼还是非诉讼业务,法律检索都是必备技能之一。只有做好法律检索才能制定出更加完备的策略报告,才能提供更加充实、可行、准确的方案。 一、数据库检索 1、alpha数据库 https://www.icourt.cc 已经用了3年的大数据库,听说最近降价了…

微前端样式隔离、sessionStorage、localStorage隔离

1、样式隔离 前端样式不隔离&#xff0c;会产生样式冲突的问题&#xff0c;这个点在qiankun也存在 子应用1修改一个样式 button {background: red&#xff01;important&#xff1b; }其它应用也会受到影响 qiankun的css隔离方案&#xff08;shadow dom&#xff09; shadow …

c语言易错题之数据类型变换

1.题目 #include<stdio.h> int main() {int arr[]{1,2,3,4,5};short*p (short*)arr;int i 0;for(i0;i<4;i){*(pi)0;}for(i0;i<5;i){printf("%d ",arr[i];}return 0; }2.解析 这道题主要容易错在&#xff0c;大家会以为通过指针赋值的时候&#xff0c;…

pickle反序列化

文章目录 基础知识pickle简介可序列化对象object.__reduce__() 函数 pickle过程详细解读opcode简介pickletools 漏洞利用利用思路如何手写opcode 工具pker实战例题[MTCTF 2022]easypickle 基础知识 pickle简介 与PHP类似&#xff0c;python也有序列化功能以长期储存内存中的数…

docusaurus简介及使用心得

docusaurus简介 Docusaurus 是 Facebook 专门为开源项目开发者提供的一款易于维护的静态网站创建工具&#xff0c;使用 Markdown 即可更新网站。构建一个带有主页、文档、API、帮助以及博客页面的静态网站&#xff0c;只需5分钟。 同类竞品还有vuepress&#xff0c;docusaurus…

基于Linux下gcc学习C/C++——编译过程

前提&#xff1a;WSL2&#xff08;Ubuntu&#xff09;、gcc编译器。gcc安装命令&#xff1a; sudo apt-get install gcc 查看gcc版本&#xff1a; 目录 1、编译过程 1.1、预处理 1.2、编译与汇编 1.3、链接 2、gcc实验 2.1、预处理 2.2、编译 2.3、汇编 2.4、链接 1、…

Win系统修改Nginx配置结合内网穿透实现远程访问多个Web站点

文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 1. 下载windows版Nginx 进入官方网站(http://nginx.org/en/download.html)下载windows版的nginx 下载好后解压进入nginx目…

[笔记]netty随笔

记录使用过程中偶然发现的一些关键逻辑。先做记录&#xff0c;以后netty知识有一定体系再做整理 childGroup 服务器中有俩group&#xff0c;一个是parentGroup&#xff0c;负责处理链接请求&#xff0c;一个是childGroup&#xff0c;负责业务逻辑。 channelActive是在childG…

Spring中你一定要知道的@PostConstruct/@PreDestroy

文章目录 功能源码解析执行 功能 Spring中存在很多回调&#xff0c;但是执行他们的时机都不相同&#xff0c;也许大家用的最多的是InitializingBean.afterPropertiesSet&#xff0c;这个方法的作用如名称一样&#xff0c;是bean初始化后执行的一个回调操作&#xff0c;而PostC…

C语言学习NO.9-指针(一)内存和地址,指针变量和地址,指针变类型的意义,const修饰指针,指针运算,野指针,assret断言,指针的使用和传址调用

指针是什么&#xff1f; 指针是什么&#xff1f; 指针理解的2个要点&#xff1a; 1.指针是内存中一个最小单元的编号&#xff0c;也就是地址&#xff1b; 2.平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放内存地址的变量。 总结&#xff1a;指针就是…

MySQL中CASE when 实战

CASE 语法 CASEWHEN condition1 THEN result1WHEN condition2 THEN result2WHEN conditionN THEN resultNELSE result END; 将表中的内容转换为右边的形式&#xff1a; 1、创建表&#xff0c;创建数据 CREATE TABLEchapter10_7 (order_id VARCHAR(255) NULL,price VARCHAR(25…