Yaml讀寫文件處理方式


一、格式

  安裝pyYaml包

  yaml主要有三種類型的數據原語:Maps,Lists,Scales(按照官方法表達:“mappings (hashes/dictionaries), sequences (arrays/lists) and scalars (strings/numbers)”),基於這三種數據原語可以組合出任何數據結構。

  • 破折號和空格( “-” ):Lists集合
  • 冒號和空格( “:” ) :Maps鍵值對
  • 井號( “#” ):注釋
  • 三個破折號( “---” ):文檔內容分隔線(多用於文檔開始的地方)
  • 三個冒號( “...” ):表示文檔的結束
  • 錨點(“&”),重復項拋錨(“*”):兩者成對表達,像定義變量a,再引用變量a的關系,是一種重復項的替換。

  yaml基於縮進的作用域跟python語法格式比較相似,縮進塊方便數據的結構化。

注意:yaml文件大小寫敏感,不允許使用用tab制表符號代替空格。

1.列表

- a
- b
['a', 'b']

2.字典

boss:
  appActivity: .module.launcher.WelcomeActivity
  appPackage: com.hpbr.bosszhipin
  automationName: UiAutomator2
  deviceName: ZXB
  newCommandTimeout: 6000
  noReset: true
  platformName: Android
  plathformVersion: '10'
{'boss': {'appActivity': '.module.launcher.WelcomeActivity', 'appPackage': 'com.hpbr.bosszhipin', 'automationName': 'UiAutomator2', 'deviceName': 'ZXB', 'newCommandTimeout': 6000, 'noReset': True, 'platformName': 'Android', 'plathformVersion': '10'}}

 

安裝yaml包

1.yaml文件的讀取

def get_Yaml_boss_data(fileName):
    '''
    獲取單個yaml文件頁面數據
    :param fileDir: 文件路徑
    :return:頁面數據
    '''
    #打開yaml文件
    fileDir= os.path.dirname(os.path.dirname(__file__))+f'/appium_basicCode/my_appium_code/boss/boss_data/{fileName}'

    fo = open(fileDir, 'r', encoding='utf-8')
    #使用第三方庫去讀取數據
    # res = yaml.loads(fo,loader=yaml.FullLoader) #處理警告
    res = yaml.load(fo,Loader = yaml.FullLoader)
    return res

2.yaml文件寫入:寫入也可以追加寫入 "a",你懂的

def writ_yaml_data(fileName,data):
    '''
    yaml里面寫入內容
    :param fileName:文件名
    :param data:需要寫入的數據
    :return:
    '''
    fileDir= os.path.dirname(os.path.dirname(__file__))+f'/appium_basicCode/my_appium_code/boss/boss_data/{fileName}'

    fo = open(fileDir, 'w', encoding='utf-8')
    #使用第三方庫去讀取數據
    res = yaml.dump(data,fo)
    return res

3.yaml文件的讀寫

    boss_desired_capabilities = {'boss':{
        'platformName': 'Android',
        'plathformVersion': '10',
        'deviceName': 'zhuxibo',
        'appPackage': 'com.hpbr.bosszhipin',
        'appActivity': '.module.launcher.WelcomeActivity',
        'noReset': True,
        'newCommandTimeout': 6000,
        'automationName': 'UiAutomator2',  # 或者UiAutomator1
        # 跳過UI2的安裝,如果第一次運行程序,不要添加該配置
        # 'skipServerInstallation':True

    }}
    #寫入數據
    writ_yaml_data('boss_para_data.yaml',boss_desired_capabilities)
    res = get_Yaml_boss_data('boss_para_data.yaml')
    print(res)
    #修改需要修改的數據
    res['boss']['deviceName']='ZXB'
    #再將數據寫入
    res1= writ_yaml_data('boss_para_data.yaml',res)
    print(res1)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM