使用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文件操作类操作实例详解
Jul 11 Python
介绍Python中几个常用的类方法
Apr 08 Python
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
django 解决manage.py migrate无效的问题
May 27 Python
快速解决pandas.read_csv()乱码的问题
Jun 15 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 Python
python 窃取摄像头照片的实现示例
Jan 08 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字符串截取问题
2006/11/28 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
BootStrap selectpicker
2016/06/20 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
Python通过future处理并发问题
2017/10/17 Python
详解python的ORM中Pony用法
2018/02/09 Python
python中的json总结
2018/10/11 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
python的help函数如何使用
2020/06/11 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
捐款倡议书怎么写
2014/05/13 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
高二英语教学反思
2016/03/03 职场文书
React forwardRef的使用方法及注意点
2021/06/13 Javascript
spring boot中nativeQuery的用法
2021/07/26 Java/Android
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python
ant design charts 获取后端接口数据展示
2022/05/25 Javascript