使用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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
python提取照片坐标信息的实例代码
Aug 14 Python
pymysql模块的操作实例
Dec 17 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
Apr 01 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
Dec 04 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 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
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
Python数组遍历的简单实现方法小结
2016/04/27 Python
python邮件发送smtplib使用详解
2020/06/16 Python
python3 爬取图片的实例代码
2018/11/06 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
浅谈python 类方法/静态方法
2020/09/18 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
专科文秘应届生求职信
2013/11/18 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
高温慰问简报
2015/07/21 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android
Java字符串逆序方法详情
2022/03/21 Java/Android