python - argparse、configparser的用法

最近在看深度学习模型的源码,第一步参数设置就看不懂,所以写了一点简单的代码片段记录下来,再去看参数设置的代码就没什么问题了,千里之行始于足下,创建模型就从参数设置开始吧。

一、conf文件

这个的话直接创建一个后缀为conf的文件就行,但是其实对文件的后缀没有什么要求,只要里面的内容符合INI格式就是,所谓的INI格式就是由节(sections)和键值对(key-value pairs)组成的内容,每个节使用方括号[]括起来,节内包含了一系列的键值对。键值对由键(key)和值(value)组成,它们之间用等号=分隔。下面给出我的conf文件配置(乱写的,就是练手罢了):

[pems03]
time = 100
period = 123
sensor = 307[pems04]
name = pems04
sensor = 107[pems07]
day = 907
name = pems07

二、conf.py文件

import argparse
import configparserconfig = configparser.ConfigParser()
config.read('config.conf')
print(config)parser = argparse.ArgumentParser(description="This is the config of the pems")
parser.add_argument('--time', type=int, default=config.get('pems03', 'time'), help="set pems03")
parser.add_argument('--period', type=float, default=config.get('pems03', 'period'), help="set pems03")
parser.add_argument('--sensor', type=int, default=config.get('pems03', 'sensor'), help="set pems03")parser.add_argument('--name', type=str, default=config.get('pems04', 'name'), help='set pems04')
parser.add_argument('--sensor04', type=int, default=config.get('pems04', 'sensor'), help='pems04')parser.add_argument('--day', type=str, default=config.get('pems07', 'day'), help='set 07')
parser.add_argument('--name07', type=str, default=config.get('pems07', 'name'), help='set 070')args = parser.parse_args()print(f"pems03 time: {args.time}")
print(f"pems03 period: {args.period}")
print(f"pems03 sensor: {args.sensor}")print(f"pems04 name: {args.name}")
print(f"pems04 sensor: {args.sensor04}")print(f"pems07 day: {args.day}")
print(f"pems07 name: {args.name07}")

解释:

  1. configparser是 Python 的一个标准库,用于读取配置文件,它负责读取配置文件中的参数,具体的代码片段为:`
config = configparser.ConfigParser()
config.read('config.conf')

通过read函数将配置文件里的配置信息读入进来。
2. argparse库是一个用户命令行友好库,用户能够通过命令行来设置参数,首先直接运行我们的python程序,输出结果如下:

<configparser.ConfigParser object at 0x000002463019DEF0>
pems03 time: 100
pems03 period: 123.0
pems03 sensor: 307
pems04 name: pems04
pems04 sensor: 107
pems07 day: 907
pems07 name: pems07Process finished with exit code 0

可以看到就是将conf文件里面的内容原样输出,接下来我们在命令行传递参数

python conf.py --name=galaxy --sensor 100 --sensor04=201

得到结果如下:

<configparser.ConfigParser object at 0x000002260DE9CDA0>
pems03 time: 100
pems03 period: 123.0
pems03 sensor: 100
pems04 name: galaxy
pems04 sensor: 201
pems07 day: 907
pems07 name: pems07

观察不难发现,name从defaul的pems04变成了galaxy,而咱们在两个section里面都有sensor这个参数,注意,咱们的参数名不能重名,不同的section中有重名变量的解决办法就是在parser.add_argument的时候设置不同的参数名:

# 不同section的重名参数,设置成为不同的参数名,在命令行给不同的值
parser.add_argument('--sensor', type=int, default=config.get('pems03', 'sensor'), help="set pems03")parser.add_argument('--sensor04', type=int, default=config.get('pems04', 'sensor'), help='pems04')

而config取参数的话就不用管了,因为config会指定section,如上代码段所示:get pems03和get pems04,这两get到的值不一样,所以不用做特殊处理。

**总结:

  1. argparse的参数不能重名,所以在设置参数名的时候需要设置不同的参数名
  2. config负责读参数,argparse负责从命令行接受参数**

具体使用细节还是得根据任务需求的不同来设计,限于篇幅也不能把所有事情说清楚,我推荐就是碰到这些问题,设计一个简单的代码片段,边查边敲代码。我从看着参数设置一头雾水到能看懂代码只花了两小时,所以talk is cheap, show me code哈哈

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

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

相关文章

Linux网络的封包和拆包

一般使用socket 到令牌环网然后向上逐渐拆包 MTU:最大的传输单元 以太网&#xff1a;1500 mss&#xff1a;网络类型&#xff0c;线路&#xff0c;以及特性相关

数据库知识点汇总(最全!,2024年最新大佬分享开发经验

十九、删除数据 DELETE 语句 使用 DELETE 语句从表中删除数据。 DELETE FROM table [WHERE condition]; 删除数据 使用 WHERE 子句删除指定的记录 DELETE FROM departments WHERE department_name ‘Finance’; 如果省略 WHERE 子句&#xff0c;则表中的全部数据将被删除 DELE…

[自研开源] MyData v0.8 数据集成案例分享

开源地址&#xff1a;gitee | github 详细介绍&#xff1a;MyData 基于 Web API 的数据集成平台 部署文档&#xff1a;用 Docker 部署 MyData 使用手册&#xff1a;MyData 使用手册 试用体验&#xff1a;https://demo.mydata.work 交流Q群&#xff1a;430089673 案例&#xff…

Oracle 11g完全卸载教程(Windows)

文章目录 一、停止Oracle服务二、卸载Oracle1、卸载Oracle产品2、删除注册表3、删除环境变量以及其余文件 一、停止Oracle服务 进入服务 找到服务中的Oracle服务并且停止 全部停止运行成功 二、卸载Oracle 1、卸载Oracle产品 点击开始菜单找到Oracle&#xff0c;然后点击…

实验模拟 搭建elk 日志分析系统

目录 一 实验环境 二 ELK Elasticsearch 集群部署&#xff08;在Node1、Node2节点上操作&#xff09; 1&#xff0c;环境准备 2, 部署 Elasticsearch 软件(node1 node2) 2.1安装es 2.2设置开机自启 2.3修改 elasticsearch主配置文件&#xff08;先备份&#xff09;…

【vue/uniapp】使用 smooth-signature 实现 h5 的横屏电子签名

通过github链接进行下载&#xff0c;然后代码参考如下&#xff0c;功能包含了清空、判断签名内容是否为空、生成png/jpg图片等。 签名效果&#xff1a; 预览效果&#xff1a; 下载 smooth-signature 链接&#xff1a;https://github.com/linjc/smooth-signature 代码参考&a…

数据库建模

了解了数据的设计思想&#xff0c;那对于数据库表的表设计应该怎么做呢&#xff1f;答案是数据库建模。 数据库建模&#xff1a;在设计数据库时&#xff0c;对现实世界进行分析、抽象、并从中找出内在联系&#xff0c;进而确定数据库的结构。它主要包括两部分内容&#xff1a;确…

Node.js发票识别+发票查验API、让繁琐查验成为过去式

互联网时代&#xff0c;随着电子商务的蓬勃发展&#xff0c;无论是纸质增值税发票还是电子增值税发票使用量都在激增&#xff0c;也正因如此&#xff0c;让部分不法分子看到了“商机”&#xff0c;利用伪造、变造发票进行逃税、骗税等违法行为&#xff0c;严重扰乱了市场秩序&a…

RHCSA 模拟题

系统环境 系统IP地址node1.example.com192.168.122.10node2.example.com192.168.122.20 在node1.example.com上执行以下任务 一、配置网络设置 将 node1 配置为具有以下⽹络配置&#xff1a; 1、主机名&#xff1a;node1.example.com 2、IP 地址&#xff1a;192.168.122.…

极狐GitLab 如何在 helm 中恢复数据

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何在极狐GitLab …

查杀linux挖矿病毒 kswapd0

中毒现象 高cpu占用&#xff0c;使用top命令查看cpu使用率长时间50%以上&#xff0c;cpu占用异常的进程八成就是挖矿病毒进程 此病毒隐藏了自己&#xff0c;top命令无法查看到挖矿病毒进程&#xff0c;可通过sysdig命令找到隐藏进程 安装sysdig curl -s https://s3.amazonaw…

[CSS]样式属性+元素设置

哎呀&#xff0c;好多东西&#xff0c;根本记不住&#xff0c;更多的还是边用边记吧&#xff0c;这里的代码就当使用范例&#xff0c;但其实如果可以让gpt应该会更好&#xff0c;哎学吧&#xff0c;反正记得住当然更好 文本 属性名描述word-break单词换行。取值如下&#xff1…

[自研开源] MyData数据融合平台 诚邀试用

MyData &#xff0c;一个旨在简化 Web 应用之间数据对接的工具&#xff0c;提高日常工作效率&#xff0c;如其名“我的数据” 旨在让用户更好的掌控和管理数据。 v1.0 的目标是&#xff1a;针对多应用之间数据集成的场景&#xff0c;为开发人员提供更安全、更方便的对接集成方…

Elasticsearch8.x 设置密码

文章目录 一、环境说明二、使用elasticsearch-reset-password工具修改1、elasticsearch-reset-password工具位置2、设置密码 一、环境说明 elasticsearch版本&#xff1a;8.13.0 系统版本&#xff1a;Ubuntu 18.04.6 二、使用elasticsearch-reset-password工具修改 1、elast…

Ubuntu22.04虚拟环境安装CUDA10.1, CUDNN和pytorch

不同的神经网络有不同的配置&#xff0c;有些从前公开的github项目&#xff0c;一些包升级之后的版本缺少相关的函数&#xff0c;老版本又不兼容&#xff0c;只能在虚拟环境中重新安装环境。 首先理顺一下CUDA&#xff0c;CUDNN&#xff0c;cudatoolkit的关系。安装CUDA就是安…

【Java程序员面试专栏 综合面试指南】5年资深程序员面试指南

基础知识对于5年内工作经验的同学考察相对比较多。包括编程语言、计算机网络、操作系统、设计模式、分布式知识、MySQL、Redis这种。其中随着年限的增长,基础知识考察的会越来越少,例如操作系统基本上只在学生阶段考察,计算机网络对于5年经验来说也考察的相对较少。5年以上对…

CSP 比赛经验分享

中国软件专业技术资格&#xff08;水平&#xff09;考试&#xff08; CSP-S &#xff09;是一项旨在评价软件和信息技术 专业人员专业技术水平的考试。对于参加过 CSP 比赛的人来说&#xff0c;这是一个展示 自己编程能力、逻辑思维和解决问题能力的好机会。下面是一些基于…

选择成为一名程序员的原因

选择成为一名程序员的原因通常是一个综合考虑的结果,可能包括个人兴趣、职业发展前景以及其他因素。 1. 兴趣是主导因素 对编程和技术有着浓厚的兴趣是许多人选择这个职业的主要原因。编程需要逻辑思维、创造力和解决问题的能力,对于那些喜欢这种挑战并从中获得满足感的人来说…

ol.layer.Vector 的postrender和map的postrender事件有什么区别

ol.layer.Vector 的 postrender 事件和 ol.Map 的 postrender 事件在 OpenLayers 这个 JavaScript 库中都是事件&#xff0c;但它们针对的对象和触发的时机有所不同。 ol.layer.Vector 的 postrender 事件 ol.layer.Vector 的 postrender 事件是针对单个矢量图层&#xff08;…

优化策略:企业海量文件传输事件处理(上)

在当今快速发展的商业环境中&#xff0c;企业的数据量正以前所未有的速度增长。这种增长不仅带来了机遇&#xff0c;也带来了挑战&#xff0c;特别是在文件传输任务的管理上。文件传输是企业日常运营中不可或缺的一部分&#xff0c;它涉及到大量的数据流动和信息交换。因此&…