一、格式
安裝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)