Python3中ConfigArgParse模块的使用

news2024/11/19 8:30:33

      ConfigArgParse是一个可以替换argparse的插件,可通过"pip install configargparse"直接安装,允许通过配置文件或环境变量设置选项.最新版本为1.5.3,源码地址为:https://github.com/bw2/ConfigArgParse,  License为MIT.
      Python中的命令行解析模块如argparse对配置文件和环境变量的支持非常有限,因此ConfigArgParse模块扩展了argparse来添加这些特性.
      Features:
      (1).command-line, config file, env var,和默认设置现在可以使用单个API一次性定义、记录和解析.如果以多种方式指定值,则: command line > environment variables > config file values > defaults;
      (2).配置文件可以具有.ini或.yaml样式语法(例如:key=value or key: value);
      (3).用户可以通过普通(normal-looking)的命令行参数(例如:-c path/to/config.txt)而不是argparse-style @config.txt提供配置文件;
      (4).可以指定一个或多个默认配置文件路径(例如:['/etc/bla.conf', '~/.my_config']);
      (5).完全支持所有argparse功能;
      (6).env vars and config file keys & syntax会自动记录在-h帮助信息中;
      (7).新方法print_values()可以报告keys & values以及它们的设置位置(例如:command line, env var, config file, or default);
      (8).轻量级(除了(可选)PyYAML之外,没有第三方库依赖项);
      (9).可扩展(ConfigFileParser可以子类化(subclassed)以定义新的配置文件格式).

     示例代码如下所示:

import configargparse # pip install configargparse

def config_file_parse():
    #parser = configargparse.ArgumentParser(default_config_files=["test.conf"])
    parser = configargparse.ArgumentParser() # Aliases: ArgParser
    parser.add_argument("-c", "--config", required=True, is_config_file=True, help="config file path") # Aliases: add, add_arg
    parser.add_argument("--csdn_addr", type=str, default="csdn", help="csdn addr")
    parser.add_argument("--github_addr", type=str, default="github", help="github addr") # Aliases: add, add_arg
    parser.add_argument("--beijing", type=bool, default=False, help="work addr1")
    parser.add_argument("--jinan", type=bool, default=True, help="work addr2")
    parser.add_argument("--tianjin", type=bool, default=True, help="work addr3")
    parser.add_argument("--age", type=int, default=2, help="age")
    parser.add_argument("--height", type=float, default=1.7, help="height")
    parser.add_argument("--package", type=str, help="package pos")

    options = parser.parse_args() # Aliases: parse

    #print("======================================")
    #print(parser.format_help())
    #print("======================================")
    print(parser.format_values())
    #print("======================================")

    print("csdn addr:", options.csdn_addr)
    print("github addr:", options.github_addr)

    if options.beijing:
        print("Your work address: BeiJing")

    if options.age > 18:
        print("You are an adult, age:", options.age)

    if options.height:
        print("Your height:", options.height)

    if options.package == "./test_package":
        print("package pos:", options.package)

if __name__=='__main__':
    config_file_parse()
    print("test finish")

      test.conf内容如下:

csdn_addr = https://blog.csdn.net/fengbingchun
github_addr = https://github.com/fengbingchun

beijing = True
tianjin = False

age = 28
height = 1.65

package = ./test_package

      执行结果如下所示:

      GitHub: https://github.com/fengbingchun/Python_Test

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

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

相关文章

分布式-分布式高可用笔记

高可用的保障方式 双十一限制退款 从业务角度考虑,由于活动期间流量巨大,订单产生数量过大,需要节省平台和商家的人力资源,节省库存盘点等工作;退款处理并不是核心流程,在双十一当天,商家也没…

vbscriptaspsql常用代码整理

1、前言 因为目前工作中一直有用到vbscript和asp和sql,所以就把一些常用的语法代码整理了一下。 2、vbscript 2.1、do while循环&if else(遍历结果集) Dim rs do while not rs.Eof rs.eof表示结果集无法获取更多的数据即(…

呼吸机方案 以 MM32F3270 为主控板,MM32SPIN05PF 为电机控制主控

呼吸机的作用是让氧气进入肺部并排出二氧化碳,帮助病患顺利呼吸。呼吸机连接一条管子到患者的嘴或鼻子,氧气量可以通过监视器加以控制。 基于灵动微控制器的呼吸机,以 MM32F3270 为主控板,MM32SPIN05PF 为电机控制主控&#xff1…

【LeetCode每日一题】——605.种花问题

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 贪心算法 二【题目难度】 简单 三【题目编号】 605.种花问题 四【题目描述】 假设有一个很长…

SpringBoot 读取自定义Properties参数

目录 1. 概述 2. 实现方式 2.1 Value方式 2.2 PropertySource与ConfigurationProperties相结合 3. 结束 1. 概述 最近想尝试写一个定时任务管理,相关参数不想在Spring的配置文件Application.yml或者Application.properties获取。想自己新建一个properties文件。顺…

基于ANSYS的无约束梁的模态分析与实验结果比较

一、实验模型简介 该模型来源于文献:“Khatir, A., Capozucca, R., Khatir, S. et al. Vibration-based crack prediction on a beam model using hybrid butterfly optimization algorithm with artificial neural network. Front. Struct. Civ. Eng. 16, 976–98…

Pr 定格拍照动画

哈喽,各位小伙伴!今天我们来学习一下如何制作定格拍照动画? ​ 新建序列 新建一个1920*1080的序列,将视频拖入序列中 选择定格画面右键—插入帧定格分段中间部分就会变成一张图片(图片时长可伸缩) 复制素…

数据结构与算法之堆排序

目录堆排序概述代码实现时间复杂度堆排序概述 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点…

LINE、SDNE和struc2vec图嵌入算法学习笔记

引言 在cs224w课程中,我先后总结了deepwalk、node2vec,这两种算是最经典也是最主流的做法,而在 图节点嵌入相关算法学习笔记 中,从头至尾,将一些经典算法用wiki的数据集复现了一下,所以本篇博文&#xff0…

2023版会声会影电脑配置要求及功能介绍

可能大家已经看到网络上关于会声会影2023新版的一些消息,今天coco玛奇朵在这里分享2023新版公布信息。会声会影2023中文版功能非常强大的视频编辑软件,非常专业的使用效果,会声会影2023可以针对剪辑电影进行使用,非常强大的色彩校…

借助CatGPT让turtlesim小乌龟画曲线

注意这里是CatGPT,不等同OpenAI的ChatGPT,但是用起来十分方便,效果也还行。详细说明ROS机器人turtlesim绘制曲线需要注意哪些ROS机器人turtlesim绘制曲线需要注意以下几点:绘制曲线前需要设置好turtlesim的初始位置和方向&#xf…

【matplotlib】条形图及垂线显示小技巧 |一些有用参考帖子收集

最近在画图。一方面看论文看思路,一方面用数据跑图出论文雏形。 有些帖子写得很好,不记录的话下次还想看就只能随缘了。 帖子 博客:nxf_rabbit75 matplotlib技巧—9.共享坐标轴、创建多个subplot、调整横坐标、放置文本框、latext文字、平移…

组播详解及示例代码

写在前面 由于公司业务需要用到组播实现,这里就记录下学习过程。在学习组播之前,我们先来看看另外两种数据包传输方式:单播和广播。 单播:简单来说就是数据一对一发送,如果需要给多个主机发送数据时,就需…

Unity入门精要02---纹理

纹理和材质不可分割 本节知识结构 实践:简单贴一张纹理到模型上 首先在属性处添加相关属性 Properties {_Color ("Color Tint", Color) (1, 1, 1, 1)_MainTex ("Main Tex", 2D) "white" {}//加入纹理_Specular ("Specular&q…

虚拟机VirtualBox下载与安装+虚拟机配置

1、虚拟机VirtualBox下载与安装官网地址:Oracle VM VirtualBox进入官网,点击左侧Dwonlaods点击Windows hosts,开始下载3.打开文件.出现报错:Oracle VM VirtualBox 7.0.4 needs the Microsoft Visual C 2019 Redistributable Packa…

转义字符\033(设置终端的字体显示效果)

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考博客 命令行特殊显示效果\033和发声音\007_华硕他哥的博客-CSDN博客 \033格式:指定输出格式_51CTO博客_wkt格式 一、\033的说明 在关于ASCII字符的那些事儿中提到,ASCII字符可以使用前面…

2023年天津医科大学临床医学院专升本专业课考试通知

天津医科大学到临床医学院2023年高职升本科专业课考试通知一、考试时间、地点 天津医科大学临床医学院2023年高职升本科考试定于2023年3月25日举行,考试地点为天津市滨海新区大港学苑路167号天津医科大学临床医学院教学楼。 二、准考证打印开放时间 本次考试打印准考…

3.4笔试总结

感觉题目好难没有做过这种类型的填空题真的是给应届实习生做的题吗第一大题 填空题一开始题目放在pdf里,我都没看清题目想干嘛其实题目看起来复杂.如果仔细读题意还是能做出几个空,无奈我太过紧张浪费了好几分钟空档时间public class Main { public static boolean isRegularMa…

内核角度谈谈Linux进程和线程

目录前言内核对进程和线程的表示创建进程的过程创建线程的过程创建进程和线程的异同揭秘 do_fork 系统调用结论前言 昨天面试的时候,面试官问我了个平平淡淡的问题–>“聊聊Linux中进程和线程”; 相比大家不管是在考试还是面试中或多或少都遇到过这个问题&…

python高德地图+58租房网站平台源码

wx供重浩:创享日记 对话框发送:python地图 免费获取完整源码源文件说明文档配置教程等 在PyCharm中运行《高德地图58租房》即可进入如图1所示的高德地图网页。 具体的操作步骤如下: (1)打开地图网页后,在编…