环境配置

# 环境配置
pip install easydict
pip install pyyaml

基本用法

# 基本用法 及 dict vs. easydict# 普通dict
# (k, v)
# k可以是int/float/str
# v为dict/任意类型
# 通过dict[?][?]...访问
gdict = dict()
gdict[1] = 1
gdict[2.3] = 2.3
gdict['4'] = '4'
2.3 in gdict
Out[17]: True
gdict[2.3]
Out[18]: 2.3# easydict(属于普通dict的子类,isinstance(tdict, dict)为True)
# (k, v)
# k只能是str
# v为edict/任意类型
# 通过edict.?.?...或edict[?][?]...访问
from easydict import EasyDict as edict
tdict = edict()
tdict['sss'] = 'sss'
tdict.ttt = 'ttt'
'sss' in tdict
Out[24]: True
'ttt' in tdict
Out[25]: True
tdict['sss'], tdict['ttt'], tdict.sss, tdict.ttt
Out[26]: ('sss', 'ttt', 'sss', 'ttt')isinstance(gdict, dict), isinstance(gdict, edict)
Out[31]: (True, False)
isinstance(tdict, dict), isinstance(tdict, edict)
Out[32]: (True, True)

实例

# ttt.yaml
NORMALIZE: True
DATASET:NAME:A: 8B: 9
# ttt.py
from easydict import EasyDict as edict
import yamldef _update_dict(cfg, value, only_update=False, keep_normal=[]):"""将源edict更新到目的edict:param cfg: 目的edict对象:param value: 源edict对象:param only_update: 仅更新不插入,不存在k时报错:param keep_normal: 当k in keep_normal,则将v直接赋值给cfg[k](即使v为edict):return:"""for k, v in value.items():if only_update:if k not in cfg:raise ValueError("{} not exist in config.py".format(k))else:if isinstance(v, edict) and k not in keep_normal:_update_dict(cfg[k], v, only_update, keep_normal)else:cfg[k] = velse:if isinstance(v, edict) and k not in keep_normal:if k not in cfg:cfg[k] = edict()_update_dict(cfg[k], v, only_update, keep_normal)else:cfg[k] = vdef update_config(cfg, config_file, only_update=False, keep_normal=[]):"""将配置文件更新到cfg:param cfg: 目的edict对象:param config_file: yaml文件路径:param only_update: 仅更新不插入,不存在k时报错:param keep_normal: 当k in keep_normal,则将v直接赋值给cfg[k](即使v为edict):return:"""with open(config_file) as f:exp_config = edict(yaml.load(f, Loader=yaml.FullLoader))_update_dict(cfg, exp_config, only_update, keep_normal)# 插入模式,不存在的键将插入值,存在的键将更新值
cfg = edict()
update_config(cfg, 'ttt.yaml')
print(cfg)
# {'NORMALIZE': True, 'DATASET': {'NAME': {'A': 8, 'B': 9}}}# 更新模式,必须保证存在键
cfg = edict()
cfg.NORMALIZE = None
cfg.DATASET = edict()
cfg.DATASET.NAME = edict()
cfg.DATASET.NAME.A = None
cfg.DATASET.NAME.B = None
update_config(cfg, 'ttt.yaml', only_update=True)
print(cfg)
# {'NORMALIZE': True, 'DATASET': {'NAME': {'A': 8, 'B': 9}}}# 更新模式,但将cfg.DATASET的值作为普通元素而非edict进行下级插入/更新
cfg = edict()
cfg.NORMALIZE = None
cfg.DATASET = None
update_config(cfg, 'ttt.yaml', only_update=True, keep_normal=['DATASET'])
print(cfg)
# {'NORMALIZE': True, 'DATASET': {'NAME': {'A': 8, 'B': 9}}}

yamleasydict作为参数文件相关推荐

  1. oracle参数文件initorcl位置,ORACLE参数文件

    ORACLE参数文件 简介 参数文件记录了数据库的配置.在数据库启动时,Oracle要根据参数文件中的参数配置数据库.如果为各个内存池分配多少内存,允许打开的进程数和会话数等.要让数据库启动,必须先读 ...

  2. Oracle的参数文件pfile和spfile

    Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件.它们是在数据库实例启动时候加载的,决定了数据库的物理 结构.内存.数据库的限制及系统大量的默认值.数据库的各种物理属性.指定数 ...

  3. SAP RETAIL初阶之事务代码MP83 显示一个预测参数文件

    SAP RETAIL初阶之事务代码MP83 显示一个预测参数文件 注:本文是一篇入门级的简单文章,仅适用于SAP REATAIL初学者,SAP零售大拿们可以跳过了. 笔者使用事务代码MP81创建了一个 ...

  4. 《MySQL技术内幕:InnoDB存储引擎第2版》——3.1 参数文件

    3.1 参数文件 在第1章中已经介绍过了,当MySQL实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认 ...

  5. Script:找出ASM中的Spfile参数文件

    以下脚本可以用于找出ASM存储中的Spfile参数文件,因为使用asmcmd去查找很不方便,而spfile丢失又是很头大的事情, 所以有一个脚本代劳可以省不少功夫呢! --- listspfiles. ...

  6. Oracle RMAN 还原与恢复(一)--还原服务器参数文件

    一. RMAN 还原与恢复基础 在RMAN 用于中,还原与恢复是两个不同的概念. 还原(restore):指访问先前生成的备份,从中得到一个或多个对象,然后在磁盘上的某个位置还原这些对象. 恢复(re ...

  7. oracle参数文件的本质

    环境: SQL> select * from v$version where rownum=1; BANNER ----------------------------------------- ...

  8. ORACLE初始化参数文件概述

    ORACLE初始化参数文件概述 在9i之前,参数文件只有一种,它是文本格式的,称为pfile,在9i及以后的版本中,新增了服务器参数文件,称为spfile,它是二进制格式的.这两种参数文件都是用来存储 ...

  9. linux下oracle数据库由于参数文件丢失导致的数据库服务启动失败,报“failure in processing system parameters“错误问题解决

    ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/data/o ...

最新文章

  1. 树莓派 Zero 与 Zero W 对比
  2. redis系列:基于redis的分布式锁
  3. 离开宁静的农村,走进喧嚣的城市:搬家!
  4. Servlet的学习(三)
  5. 求求你不要手写redis 缓存set,get
  6. Response.ContentType 详细列表
  7. 优盘中毒,里面有(System Volume Information文件夹)删除不了?教你怎么解决
  8. 应用性能调优分析与总结
  9. Java数据类型分类 1
  10. 有关错误:buffer i/o error on device fd0,logical block 0
  11. Centos 搭建 FastFDS 分布式文件存储系统
  12. 手机5g什么时候普及_5G牌照发放仨月,5G手机扎堆上市,何时才能真正普及?
  13. 第二十三章 宋桓公自行其是讨苦吃 齐桓公连克宋郑震东方
  14. 非递归中序遍历二叉树
  15. VoLTE的基本介绍
  16. Interviewing at Amazon — Leadership Principles Reading Notes
  17. 上三角矩阵判定-c++
  18. 迅雷看看播放器4.9.15.2156 如何观看超过5分钟以上的视频?
  19. java 导出mdb文件_Java中Java生成mdb文件工具类
  20. 易信开放网易公众平台 推出语音和视频形式

热门文章

  1. 让管理员将所有服务器连接到一台显示器,信息技术基础模拟题
  2. 大数据技术助推数字化智慧城市管理平台的搭建
  3. vuex 的理解,vuex 的执行机制
  4. 数据库领域的未来发展趋势是怎样的?
  5. 只有一种人不会成为直销难民
  6. 恋与抽卡模拟器网页_恋与制作人抽卡模拟器怎么用 模拟器使用说明
  7. [ 题解 ] [ 逆推 ] A. Taming the Herd
  8. 哔哩哔哩在港溢价发行:上市材料出错被批评,暗盘已破发
  9. salesforce零基础学习(九十七)Big Object
  10. Python之put接口