使用python检查yaml配置文件是否符合要求
作者:wangjiadongge 发布时间:2021-06-23 05:27:53
标签:python,yaml,配置,文件
我就废话不多说了,大家还是直接看代码吧!
# coding=utf-8
import logging
import yaml
import os
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
# 获取当前目录的路径
cur_dir = os.path.abspath('.')
def check_dt_pacsscp(config):
"""
用来检查文件配置是否正确
"""
#将配置config.yaml配置文件以字典方式读取
dts_method = config['service']['method']
dts_dup_check = config['service']['pacsscp_dup_check_off']
dts_interval = config['scheduler']['interval']
#判断对接方式是否是pacsscp
if dts_method == 'pacsscp':
if dts_dup_check == True and dts_interval == 3:
return True
else:
return False
else:
#打印error级别的错误
print "\033[31m Error:method not is pacsscp!!!\033[0m"
return False
if __name__ == "__main__":
# 加载yaml配置
config_yaml = os.path.join(cur_dir, 'config.yaml')
with open(config_yaml, 'rt') as f:
config = yaml.safe_load(f.read())
#dt相关路径和配置
dt_path = config['path']['docking-toolbox']
dt_config_path = os.path.join(dt_path, 'config.yaml')
with open(dt_config_path, 'rt') as f:
dt_config = yaml.safe_load(f.read())
if check_dt_pacsscp(dt_config):
print (u"\033[32m 校验通过~\033[0m")
else:
print (u'\033[32m 校验未通过, 请检查配置!\033[0m ')
以下是用正则获取不是yaml配置文件的
# coding=utf-8
"""
作业要求, 完善check_txpacs_version函数
"""
import logging
import traceback
import yaml
import os
import sys
import re
reload(sys)
sys.setdefaultencoding("utf-8")
# 获取当前目录的路径
cur_dir = os.path.abspath('.')
def check_txpacs_version(config, constant):
"""
高难度
校验txpacs版本, 若版本<1.4, 则回调中不能出现received_start_timestamp和received_end_timestamp这两个参数,
若不合法打印error级别的提示;
校验txpacs的自动清理功能是否合法: 若dt版本<1.3.8, 则不做要求,
若dt版本>=1.3.8, 则要求txpacs版本必须为1.5.1及以上版本, 且txpacs配置的clean_date需配置为正整数
(docking-toolbox的版本号可以从文件'docking-toolbox/toolbox/utils/constant.py'中读取),
若不合法打印error级别的提示.
根据以上结果, 返回返回值.
:param config: txpacs的配置
:param constant: docking-toolbox/toolbox/utils/constant.py文件内容
:return: True: 通过
False: 不通过
"""
# 获取txpacs的版本号
jar_file = os.listdir(txpacs_path)
jar_file.sort(reverse=True)
jar_ver = jar_file[0]
jar_version = re.search('txpacs-(.*?).jar', jar_ver)
#txpacs的版本号
txpacs_version = jar_version.group(1)
#docking-tools的版本号
dt_version = re.search('DT_VERSIONS.*?"(.*?)"',constant).group(1)
#打开txpacs的配置文件
with open(txpacs_config_path, 'rt') as f:
txpacs_file = f.read()
#判断txpacs的版本号是否小于1.4
if txpacs_version < '1.4':
#判断received_start_timestamp" and "received_end_timestamp"两个参数是否出现在txpacs配置文件中
if "received_start_timestamp" and "received_end_timestamp" not in txpacs_file:
return True
else:
print "\033[31m Error:当前的txpacs版本号是txpacs-%s ,不应该存在received_start_timestamp和received_end_timestamp\033[0m"%txpacs_version
return False
#如果txpacs版本号大于等于1.4
else:
#判断DT版本是否大于1.3.8
if dt_version >= '1.3.8':
if txpacs_version >= '1.5.1':
if config['store']['clean_date'] > 0:
return True
else:
print "\033[31m Error:txpacs配置文件中clean_date应为正整数 \033[0m"
return False
else:
print "\033[31m Error:当前DT版本大于1.3.8,txpacs版本必须大于等于1.5.1\033[0m"
return False
else:
return True
if __name__ == "__main__":
# 加载yaml配置
config_yaml = os.path.join(cur_dir, 'config.yaml')
with open(config_yaml, 'rt') as f:
config = yaml.safe_load(f.read())
# txpacs相关路径和配置
txpacs_path = config['path']['txpacs']
txpacs_config_path = os.path.join(txpacs_path, 'conf.yml')
with open(txpacs_config_path, 'rt') as f:
txpacs_config = yaml.safe_load(f.read())
# dt相关路径和配置
dt_path = config['path']['docking-toolbox']
dt_constant_path = os.path.join(dt_path, 'toolbox', 'utils', 'constant.py')
with open(dt_constant_path, 'rt') as f:
dt_constant = f.read()
if check_txpacs_version(txpacs_config, dt_constant):
print (u"\033[32m 校验通过~\033[0m")
else:
print (u'\033[32m 校验未通过, 请检查配置! \033[0m')
来源:https://blog.csdn.net/wangjiadongge/article/details/100632770
0
投稿
猜你喜欢
- 惊叹于老外的发现 《CSS Background image on html image element?》,自己从没关注过,也没想过如此的
- 1、使用索引来更快地遍历表。缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索
- 每个人都可以编写CSS代码,甚至你现在已经让它为你的项目工作了。但是CSS还可以更好吗?开始用这5个Tips改进你的CSS吧!一、关于CSS
- 此文刊登在《程序员》三月期,有删改提到安全问题,首先想到应付这些问题的应该是系统管理员以及后台开发工程师们,而前端开发工程师似乎离这些问题很
- 教程使用的版本是2019.1新版本安装激活可以参考此篇教程,通用版!一、go安装1、建议去go语言中文网下载,网址:https://stud
- 问: 如果数据表中有时间字段,现在要迁移到其他时区的服务器上,该如何处理呢?答:在高版本的mysqldump中,新增了一个选项:--tz-u
- 1.线性与非线性回归线性回归 Linear Regression:两个变量之间的关系是一次函数关系的—&mdas
- WordPress可以改造成twitter一样的微博网站,但是有一个坏处就是你要么用来做博客要么用来做微博,功能难兼得。相信大家在访问一些知
- Oracle 的正规表达式的实施是以各种 SQL 函数和一个 WHERE 子句操作符的形式出现的。如果您不熟悉正规表达式,那么这篇文章可以让
- 联合结果集 新建临时工数据表 代码如下:CREATE TABLE T_TempEmployee (FIdCardNumber VARCHAR
- Application Name(应用程序名称):应用程序的名称。如果没有被指定的话,它的值为.NET SqlClient Data Pro
- 内码问题.用这段代码的吧,我已经改得很精简了.使用XMLHTTP抓取地址并进次内容处理Function GetBody(Url) Dim o
- 一.GO程序目录结构在GOPATH目录下的结构--bin(存放编译后生成的可执行文)|----hello.exe(可执行文件)--pkg(存
- 前言本文根据安前松的视频分享整理而来,视频回放地址如下:www.bilibili.com/video/BV1Hr…一、
- 这篇论坛文章着重介绍了SQL Server数据库简体繁体数据混用的问题,详细内容请参考下文:我现在要说的是一个在简体繁体数据混用的时候很容易
- 在有些情况下,利用try…except来捕捉异常可以起到代替if…else的作用。比如在判断一个链表是否存在环的leetcode题目中,初始
- Windows环境下一、开启 Imagick 扩展1、安装PHP扩展:Imagick,下载地址 https://pecl.php.net/p
- 译序:本文提到了一种很不错的实现跨浏览器圆角的解决方案,但是说的不够全面,前端观察最近将整理更多更全面的资源给大家,敬请期待。前一段时间,我
- 本文实例讲述了smarty简单分页的实现方法,分享给大家供大家参考。具体实现方法如下:以下是模板中的smarty代码,用smarty简单的代
- 作者:bencalie 整理日期:2004年6月15日<xml id="users"> <u