在封装python模块为扩展库的过程中,发现python中没有直接读取yaml配置文件的库。
由于只需要简单配置IP和端口号,于是想通过接口来进行设置。
接口方式设置参数
话不多说,先上示例代码。
#!/usr/bin/python
# -*- coding:utf-8 -*-
import json
import sys
import requests
import logging
ip_port = {
'ip': '127.0.0.1',
'port': 8080
}
json_header = {
'Content-Type': 'application/json'
}
# 设置请求IP和端口号
def set_ip_port(ip, port):
global ip_port
if ip:
ip_port['ip'] = ip
if port:
ip_port['port'] = port
# 发送post请求
def request_post(api, params, func_name, fail_res):
req_url_pre = 'https://' + ip_port['ip'] + ':' + str(ip_port['port'])
req_url = req_url_pre + api
res = requests.post(req_url, verify=False, data=json.dumps(params), headers=json_header)
if res.status_code == requests.codes.ok:
logging.info(func_name + ' request send success...')
return res.json()
else:
logging.error(func_name + ' request send failed...')
fail_res['errCode'] = res.status_code
return json.dumps(fail_res, ensure_ascii=False)
先给变量一个默认值,然后通过global
将变量声明为全局变量,这样就能通过参数参入的方式需要修改的变量值。
配置文件方式
XML文件
读取xml文件的库是python内置的,可以通过xml.etree.ElementTree
结合xpath语法读取属性值。
例如,有xml文件配置如下:
<?xml version="1.0" encoding="utf-8" ?>
<server>
<ip>127.0.0.1</ip>
<port>8080</port>
</server>
读取配置文件:
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import xml.etree.ElementTree as etree
tree = etree.parse("conf.xml")
# 获取根节点
root = tree.getroot()
print('root.tag', root.tag)
print('ip', root[0].text)
print('port', root[1].text)