使用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 相关文章推荐
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
python学习 流程控制语句详解
Jun 01 Python
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
python入门:这篇文章带你直接学会python
Sep 14 Python
python使用response.read()接收json数据的实例
Dec 19 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
python 为什么说eval要慎用
Mar 26 Python
python占位符输入方式实例
May 27 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
win10从零安装配置pytorch全过程图文详解
May 08 Python
Python类class参数self原理解析
Nov 19 Python
Python采集股票数据并制作可视化柱状图
Apr 04 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中使用XML
2006/10/09 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
在Django框架中设置语言偏好的教程
2015/07/27 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
python实现kMeans算法
2017/12/21 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python生成器常见问题及解决方案
2020/03/21 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
酷瑞网络科技面试题
2012/03/30 面试题
给上级领导的感谢信
2015/01/22 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL