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

# 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检查yaml配置文件是否符合要求

本文地址: http://www.cppcns.com/jiaoben/python/306488.html

pythonyaml参数_使用python检查yaml配置文件是否符合要求相关推荐

  1. python读取yaml配置文件的方法

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

  2. python怎么理解函数的参数_理解Python中函数的参数

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...

  3. python传中文参数_解决Python传递中文参数的问题

    今天有个需要需要传递中文参数给URL 但是在GBK环境下的脚本传递GBK的参数老是给我报UNICODE的解码错误.烦的很. 所以我们果断选择用urlencode来处理中文, 由于国内外网站编码不同,国 ...

  4. python调用shell脚本的参数_使用python执行shell脚本 并动态传参 及subprocess的使用详解

    最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 subpr ...

  5. python中list作为函数参数_在python中list作函数形参,防止被实参修改的实现方法

    0.摘要 我们将一个list传入函数后,函数内部对实参修改后,形参也会随之改变.本文将主要介绍这种错误的现象.原因和解决方法. 1.代码示例 def fun(inner_lst): inner_lst ...

  6. python 实例方法调用时可以忽略第一个参数_盘点Python中易忽略的函数

    Python 内置函数 1.ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数, ...

  7. shell调用python脚本传递命名关键字参数_关于python:将字典作为关键字参数传递给函数...

    我想使用字典在python中调用函数. 这是一些代码: d = dict(param='test') def f(param): print(param) f(d) 这打印{'param': 'tes ...

  8. python request请求参数_使用python将请求的requests headers参数格式化方法

    如下所示: import json # 使用三引号将浏览器复制出来的requests headers参数赋值给一个变量 headers = """ Host: zhan. ...

  9. python中文字体奇怪_利用python检查 AS400的中文字问题

    总所周知,AS400处理中文的能力比较有限,特别是在针式打印机上打印含有中文字体的报表的时候,特别容易出现乱码.这里先探讨一下AS400的 中文格式.在AS400中,存放中文字的字段都是以0x0E开头 ...

最新文章

  1. C++ 笔记(01)— 环境设置(安装g++、g++ 编译 C++、 生成可执行文件流程、解释器与编译器区别)
  2. postgresql----文本搜索类型和检索函数
  3. iphone微信美颜插件_Cydia插件推荐
  4. 查看tensorflow等第三方包支持平台
  5. python开发需要学什么_用Python进行web开发需要学习什么?
  6. Linux救援模式实战
  7. cm如何查看各个组件版本_Oracle HowTo:查询Oracle各组件的版本信息
  8. 台湾厂商:大陆投资DRAM工厂可能破坏全球市场
  9. python拓展包之pymoo使用方法:多目标优化(NSGA2)
  10. linux怎么把dos改成unix_Linux命令之dos2unix – 将DOS格式文本文件转换成UNIX格式
  11. 汉高软件服务器安装系统,如何安装了如指掌眼镜管理系统的服务器和客户端,还需要安装什么软件的?...
  12. 二维傅里叶变换的理解和使用
  13. 【解决问题】WindowsXXX端口已被占用:以 1080端口已被占用 为例
  14. Pr 视频速率与关键帧
  15. 围棋大师阿里,产品经理腾讯
  16. 关于法线贴图、颜色贴图和高光贴图
  17. mysql计算员工年终奖金_年终奖 扣税计算
  18. 03-STM32+Air724UG远程升级篇OTA(阿里云物联网平台)-STM32+Air724UG使用阿里云物联网平台OTA远程更新STM32程序
  19. 谁在崛起,谁在没落?新一线城市竞争力盘点,用Python绘制动态图带你看懂!
  20. 一个新手学着重装系统之路

热门文章

  1. git配置中文乱码_解决git中文乱码问题
  2. 求无向图中某顶点的度 (有注释)
  3. dataframe 添加列表到一个单元格并解决报错ValueError: Must have equal len keys and value when setting with an...
  4. 判断成绩linux程序编程,程序输入输出 ,编写判断成绩的程序
  5. 南林计算机课程表,南京林业大学课程表.doc
  6. bz2解压命令_Java压缩技术 - tar.bz2解压缩
  7. java逆向框架,Android逆向之逆向框架层
  8. Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】
  9. java 实现一套流程管理、流转的思路(伪工作流) 【仅供参考】
  10. 【VMware】宿主机连接wifi,虚拟机中的Linux系统配置连接wifi