Python中yaml和json文件的读取和应用

Python对yaml和json文件的读取:

yaml文件读取:

首先创建一个yaml文件test.yaml

 

import yaml   #引入包

f=open(path)  #建立Python的文件对象f, 打开yaml文件到文件对象f;注:这一操作在打开所有第三方文件格式的时候都要做,不一定是yaml文件

test=yaml.load(f)  #通过yaml模块中的load函数,将yaml 数据以Python中字典的形式加载进来

 

注:path是test.yaml的文件路径,可以通过 path= os.path.dirname(os.path.realpath(_file_))+"test.yaml"的方式获取,如果py文件和yaml文件在同一个文件夹下,可以直接用'test.yaml'

然后字典test中的数据就可以灵活运用了

 

json文件读取:

json文件的读取方式和处理方式和yaml文件相同

import json   

f=open(path) 

test=json.load(f) 

 

一个简单栗子:

# coding: UTF-8    
import yaml
import json

f= open('test.yaml')
test_f=yaml.load(f)
print f
print test_f

g=open('test.json')
test_g=json.load(g)
print g
print test_g

print type(test_f)
print type(test_g)

输出

<open file 'test.yaml', mode 'r' at 0x100c2b810>
{'Content-Type': 'application/x-www-form-urlencoded'}
<open file 'test.json', mode 'r' at 0x100c2b8a0>
{u'Content-Type': u'application/x-www-form-urlencoded'}
<type 'dict'>
<type 'dict'>

 

 

从以上的小栗子可以看出,yaml 文件和json文件的格式输出虽然都是字典,但还是有小区别的,这就带来一些影响

json的输出带u:也就是unicode的格式标志,而Python的格式一般会在文件开头定义成UTF-8

这就导致对于json文件,解析时有时会出现错误,而接口测试的接口响应数据就是json格式,所以在出来接口响应数据的py文件中,要加入以下两句:

import sys
#设置默认解码格式,如果不加这句请求的返回值有的是Unicode,logging输出时会报解码错误
reload(sys)
sys.setdefaultencoding('utf-8')

而yaml 文件一般用做用例,来记录请求参数

 

yaml文件与json文件的区别

yaml文件书写格式:

Testcase_name:test
Method: POST
Testcase:
 - ID: 1
   Header:
    Content-Type: application/x-www-form-urlencoded
    x-access-token: ""
   Data:
     name: "aa"
     age:"bb"
   Result:
     resultcode: 0
     resultmsg: ""

yaml输出格式:

{
 'Method': 'POST', 
 'Testcase_name': 'test'
 'Testcase': 
           [
            {'Header': 
                      {'x-access-token': '', 
                      'Content-Type': 'application/x-www-form-urlencoded'}, 
             'Data': {'age': 'bb', 
                      'name': 'aa'}, 
             'ID': 1, 
             'Result': 
                     {'resultcode': 0, 
                     'resultmsg': ''}
            }
           ], 
}

 

json文件书写格式:

{
  "Content-Type": "application/x-www-form-urlencoded"
}

 补充:python文件有自带的读取函数

         读取方式:

f=open('test_try.yaml')
test=f.read()

这种方式不用引用模块,但是test的类型是字符串

posted @ 2018-01-05 19:29  mghhz816  阅读(3632)  评论(0编辑  收藏  举报