使用python检查yaml配置文件是否符合要求


Posted in Python onApril 09, 2020

我就废话不多说了,大家还是直接看代码吧!

# 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')

以上这篇使用python检查yaml配置文件是否符合要求就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 流程控制实例代码
Sep 25 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
Python批量发送post请求的实现代码
May 05 Python
python实现简易内存监控
Jun 21 Python
详解numpy的argmax的具体使用
May 27 Python
Python button选取本地图片并显示的实例
Jun 13 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
jupyter notebook参数化运行python方式
Apr 10 Python
pycharm2020.2 配置使用的方法详解
Sep 16 Python
图文详解matlab原始处理图像几何变换
Jul 09 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 #Python
python实现简单学生信息管理系统
Apr 09 #Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 #Python
pycharm的python_stubs问题
Apr 08 #Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 #Python
解决pycharm下pyuic工具使用的问题
Apr 08 #Python
解决pyqt5异常退出无提示信息的问题
Apr 08 #Python
You might like
PHP定时更新程序设计思路分享
2014/06/10 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
js实现轮播图特效
2020/05/28 Javascript
微信小程序实现锚点跳转
2020/11/23 Javascript
简单介绍Ruby中的CGI编程
2015/04/10 Python
利用python代码写的12306订票代码
2015/12/20 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
荷兰手表网站:Watch2Day
2018/07/02 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
后进生转化工作制度
2014/01/17 职场文书
2015年公司新年寄语
2014/12/08 职场文书
高中生军训感言
2015/08/01 职场文书
创业计划书介绍
2019/04/24 职场文书
vue项目支付功能代码详解
2022/02/18 Vue.js