zoukankan      html  css  js  c++  java
  • 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的类型是字符串

  • 相关阅读:
    js四舍五入
    文本框只能输入整数,输入其他的自动不显示
    [转]关于C#程序部署到Android
    ajax在火狐中传中文出现乱码的解决方法
    Vue 记录 Cannot read property '_withTask' of undefined
    vs中 VMDebugger未能加载导致异常
    System.InvalidOperationException: 支持“XXX”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
    eclipse中将java项目转换成javaweb项目
    Android之SOAP协议与WebService服务器交互,解决超时的问题
    SymmetricDS 快速和灵活的数据库复制
  • 原文地址:https://www.cnblogs.com/mghhzAnne/p/8206486.html
Copyright © 2011-2022 走看看