当前位置: 首页 > news >正文

Python argparse对象与dict对象的相互转化

一、引言

        Python argparse是Python内置的、用于命令项选项与参数解析的模块,该模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数。

        应用场景举例。例如,你写了一份Python代码,该代码有一些参数在我的程序中无法确定,而是要等到你去调用Python文件执行时才可以确定。这时,你就可以通过argparse来大展身手。

        使用举例。当你为你的Python程序定义好一些参数列表之后,你可以调用下面的脚本/命令来执行你的Python程序:

python a_code.py --name "JACK Williams" --height 175.6 --weight 75

        其中“a_code.py”是你写的Python程序,“name”、“height”和“weight”是你的程序所需要用到的参数,且这些参数的值需要在执行时才能确定。

        由于我们经常会用到argparse这个Python自带库,所以在程序中如果出现很多参数时,我们难免会想要通过保存成文件的方式来存住这些参数,这样,如果程序下次还需要调用这些参数,我们就可以快速地、自动地、高效地得到这些曾经输入过的参数值。

        所以,这篇博客提供了argparse对象和dict对象相互转换的方法。如果你想要保存这些参数和参数值到文件,就可以先将argparse转为dict对象(这也可以认为是简版json对象,因为dict只有键值对),然后再将dict对象通过Python自带的json库来将其保存到文件中去。对于json对象的文件读写,可以参考Python json对象 - 文件 读写这篇博客。

        这样,我们可以从argparsedict(json)再到文件,也可以从文件dict(json)再到argparse

二、argparse转dict

        思路:在Python程序中定义好参数列表,然后从终端读取参数列表得到argparse对象,然后将该对象转化为dict对象。

        1、代码:在Python程序中定义好参数列表(也包括了argparse到dict的转换),这里对应的Python程序文件名为“args2dict.py”

import argparse

# define arguments
def parse_args(args=None):
    parser = argparse.ArgumentParser()
    parser.add_argument('--Name', type=str)
    parser.add_argument('--ID', type=int)
    parser.add_argument('--At_School', type=bool)
    parser.add_argument('--Math_Score', type=float)
    return parser.parse_args(args)

# program entrance
if __name__ == '__main__':
    # read args from the terminal
    an_args = parse_args()

    # transfer the args to a dict
    args_dict = vars(an_args)

    # use the dict
    for k in args_dict.keys():
        print(k, args_dict[k], type(args_dict[k]))

        2、在终端中执行“args2dict.py”时输入参数列表,完了以后程序会自动将参数列表转成dict对象

python args2dict.py --Name "JACK Williams" --ID 391568 --At_School true --Math_Score 95.6

        3、程序的执行输出如下

Name JACK Williams <class 'str'>
ID 391568 <class 'int'>
At_School True <class 'bool'>
Math_Score 95.6 <class 'float'>

三、dict转argparse

        思路:调用argparse的静态方法Namespace,自动将dict的键值对转化为argparse对象

        代码

import argparse

# create a dict object
a_student = {'Name': 'JACK Williams',
             'ID': 391568,
             'At_School': True,
             'Math_Score': 92.3}

# transfer the dict object to an ArgumentParser object
args = argparse.Namespace(**a_student)

# use the ArgumentParser object
print(args.Name, type(args.Name))
print(args.ID, type(args.ID))
print(args.At_School, type(args.At_School))
print(args.Math_Score, type(args.Math_Score))

        该程序输出如下

JACK Williams <class 'str'>
391568 <class 'int'>
True <class 'bool'>
92.3 <class 'float'>

四、参考

        1、以字典形式传入argparse的参数

        2、Python使用json库进行json对象的文件读写操作

相关文章:

  • 网站开发技术交流群/黄冈便宜的网站推广怎么做
  • dedecms 网站搬家/解释seo网站推广
  • 网站图片轮播怎么做/谷歌官网
  • 帮别人备案网站吗/怎样优化关键词到首页
  • 阿里云做网站买什么软件/关键词查网站
  • 深圳做网站公司哪家好/系统优化助手
  • Qt图表操作(QCustomPlot 与 QtCharts的介绍与使用)
  • 代码随想录--数组相关题目整理
  • python学习笔记---IO编程【廖雪峰】
  • 2023年1月Free Excel 第二次打卡
  • 不懂Token,就是别说自己是中级测试工程师
  • SQL优化核心思想:或许你不知道的5条优化技巧
  • 并发场景使用SimpleDateFormat异常问题和解决
  • 【十 三】Netty 私有协议栈开发
  • 腾讯安全发布《2022年DDoS攻击威胁报告》:DDoS威胁4年持续增长
  • 渗透测试— —扫描与爆破账号
  • QEMU零知识学习4 —— QEMU编译
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例