加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

RobotFramework自定义系统关键字解析txt,csv,dbf,xml格式文件(

发布时间:2020-12-16 23:36:50 所属栏目:百科 来源:网络整理
导读:一、dbf文件解析 内容示例如下,读取全部内容: 实现思路: 1.每一行保存在一个字典中:key为字段名,value是字段值; 2.使用列表保存所有行记录(字典项) (一)使用DbfLibrary需要安装dbfread第三方模块,可以通过pip安装,也可以到https://pypi.org/proj

一、dbf文件解析

内容示例如下,读取全部内容:

实现思路:

1.每一行保存在一个字典中:key为字段名,value是字段值;

2.使用列表保存所有行记录(字典项)

(一)使用DbfLibrary需要安装dbfread第三方模块,可以通过pip安装,也可以到https://pypi.org/project/dbfread/#files下载dbfread压缩包,放在python安装目录C:Python27下,解压后直接执行setup.py文件安装。

(二)自定义系统关键字

1.Test Library名称定义为DbfLibrary;

在pythin安装目录C:Python27Libsite-packages路径下新建DbfLibrary文件夹

2.新建dbffileimport.py文件,定义类DbfFileImportt,在类方法中按照实现思路进行处理;

# -*- coding: utf-8 -*-
from dbfread import DBF
import datetime
class DbfFileImport(object):
	def ProcDbfStkItfFileData(self,itfId,trdDate):
		"""
			dbf文件解析函数,调用方法:ProcDbfStkItfFileData(‘ITF_SZ_SJSKS‘,‘20181126‘);
		"""
		if(itfId==‘ITF_SZ_SJSKS‘):
			"""
			深圳发行可申购额度信息库SJSKS.DBF解析
			"""
			fileName="D:ITFvsatSJSKS.DBF"
			sjsksList=[]
			sjsksTable=DBF(fileName)
			for record in sjsksTable:
				rdict={}
				for field in record:			
					rdict[field]=record[field]  #field是字段名,record[field]是字段值
					if(field==‘KSFSRQ‘):
						rdict[field]=datetime.datetime.strftime(rdict[field],‘%Y%m%d‘)   #日期格式化
				sjsksList.append(rdict)
			return sjsksList
		else:
			return 0;
				
if __name__=="__main__":
	p=DbfFileImport();
	sjskslist=p.ProcDbfStkItfFileData(‘ITF_SZ_SJSKS‘,‘20181127‘);
	print(sjskslist)


	

3.新建__init__.py文件如下,类DbfLibrary继承上面的DbfFileImport,RobotFramework启动时会加载这个文件,从而调用类中定义的方法(关键字);

from dbffileimport import DbfFileImport
__version__ = ‘0.6‘
class DbfLibrary(DbfFileImport):
	ROBOT_LIBRARY_SCOPE=‘GLOBAL‘;

  

4.重启Robot Framework,按F5即可搜索到DbfLibrary的关键字。;

二、xml文件解析

?文件实例如下,要读取的是<SecurityID>标签内的内容

(一)自定义系统关键字

1.Test Library名称定义为XmlLibrary;

在pythin安装目录C:Python27Libsite-packages路径下新建XmlLibrary文件夹.

2.新建文件imcsecurityparamshandler.py,处理xml文件;

# -*- coding: utf-8 -*-
import xml.sax
class imcsecurityparamsHandler(xml.sax.ContentHandler):
	"""
	currentData:保存当前元素标签,例如<a>test</a>,则currentData取值为a
	securityID:xml文件只读取标的证券代码
	securityList:定义一个列表,保存所有的securityID
	"""
	def __init__(self):
		self.currentTag =‘‘
		self.securityID =‘‘
		self.securityList=[]    
 
   # 元素开始事件处理
	def startElement(self,name,attr):
		"""
		遇到xml标签开始时调用,第二个参数是标签名,第三个参数是标签属性
		"""
		self.currentTag = name     #每遇到一个xml标签都将标签名保存在类的公有变量currentData中,所有的标签名都会保存在这里,currentData一直在变化
	  
   # 内容事件处理
	def characters(self,content):
		"""
		从行开始,遇到标签之前,存在字符,content的值为这些字符串。
		从一个标签,遇到下一个标签之前, 存在字符,content的值为这些字符串。(这里是这种情况)
		从一个标签,遇到行结束符之前,存在字符,content的值为这些字符串
		"""
		if self.currentTag == "SecurityID":  #如果startElement解析到的标签名是SecurityID,就将元素的内容保存到类的公有变量securityID中,这里是过滤xml文件只读感兴趣的标签内容
			self.securityID = content

   # 元素结束事件处理
	def endElement(self,name):
		"""
		遇到xml结束标签时调用
		"""
		if self.currentTag == "SecurityID":
			self.securityList.append(self.securityID.rstrip())   

	def getImcsecurityList(self):
		return self.securityList

  

2.新建xmlfileimport.py文件,定义类XmlFileImport,调用上面handler定义的方法,获取文件解析的结果;

# -*- coding: utf-8 -*-
import xml.sax
from imcsecurityparamshandler import imcsecurityparamsHandler
from szetfhandler import szetfHandler
class XmlFileImport(object):
	def ProcXmlStkItfFileData(self,trdDate):
		"""
			XML文件解析函数,调用方法:ProcXmlStkItfFileData(‘ITF_SGT_IMCSECURITYPARAMS‘,‘20181126‘);
		"""
		if(itfId==‘ITF_SGT_IMCSECURITYPARAMS‘):
			"""
			深交所港股标的信息imcsecurityparams.xml解析
			"""
			fileName="D:ITFimcsecurityparams_"+trdDate+".xml"
			imcsecuritytlist=[]
			parser = xml.sax.make_parser() # 创建一个 XMLReader
			parser.setFeature(xml.sax.handler.feature_namespaces,0) # turn off namepsaces
			myHandler = imcsecurityparamsHandler()    #创建imcsecurityparamsHandler对象,专门定义来处理imcsecurityparams.xml文件的类
			parser.setContentHandler( myHandler )# 重写 ContextHandler
			parser.parse(fileName)
			imcsecuritytlist=myHandler.getImcsecurityList()
			return imcsecuritytlist
		else:
			return 0;
	
if __name__=="__main__":
	p=XmlFileImport();
	#imcsecuritytlist=p.ProcXmlStkItfFileData(‘ITF_SGT_IMCSECURITYPARAMS‘,‘20181128‘);
	baseinfo=p.ProcPcfXmlStkItfFileData(‘ITF_SZ_ETF_V5‘,‘20181213‘,‘158812‘);
	print(baseinfo)

  

3.新建__init__.py文件如下,类XmlLibrary继承上面的XmlFileImport,RobotFramework启动时会加载这个文件,从而调用类中定义的方法(关键字);

from xmlfileimport import XmlFileImport
__version__ = ‘0.6‘
class XmlLibrary(XmlFileImport):
	ROBOT_LIBRARY_SCOPE=‘GLOBAL‘;

4.重启Robot Framework,按F5即可搜索到XmlLibrary的关键字。;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读