设计师网站模版wordpress做视频网站吗
设计师网站模版,wordpress做视频网站吗,阳江招聘网收银,怎么下载网页上的视频PyYAML6.0.3 核心基本用法
PyYAML 6.0.3 仅支持 Python3.6#xff0c;核心能力是Python原生数据 ↔ YAML字符串/文件的双向转换#xff0c;且官方强推安全解析/序列化#xff08;避免代码注入、格式异常#xff09;#xff0c;下面的用法覆盖日常99%的使用场景#xff0c…PyYAML6.0.3 核心基本用法PyYAML 6.0.3 仅支持 Python3.6核心能力是Python原生数据 ↔ YAML字符串/文件的双向转换且官方强推安全解析/序列化避免代码注入、格式异常下面的用法覆盖日常99%的使用场景直接可复制运行。前置准备安装精准安装指定版本终端执行pipinstallpyyaml6.0.3代码中统一导入模块importyaml一、核心基础Python数据 → YAML字符串dump将Python的字典、列表、基本数据类型str/int/float/bool/None序列化为YAML格式的字符串核心用yaml.safe_dump()安全序列化无自定义标签风险官方推荐。1. 基础序列化字典/列表# 1. 序列化Python字典最常用对应YAML的键值对python_dict{name:张三,age:25,is_student:False,score:98.5,hobby:[篮球,编程],address:None}yaml_str1yaml.safe_dump(python_dict,sort_keysFalse,allow_unicodeTrue)print(字典转YAML\n,yaml_str1)# 2. 序列化Python列表python_list[Python,Java,100,True]yaml_str2yaml.safe_dump(python_list,allow_unicodeTrue)print(列表转YAML\n,yaml_str2)关键参数必配解决中文/排序问题allow_unicodeTrue保留中文避免中文被转成Unicode编码如\u5f20\u4e09必加sort_keysFalse不自动对字典的key排序保留Python字典的原始键顺序PyYAML默认会按字母排序key。输出结果字典转YAML name: 张三 age: 25 is_student: false score: 98.5 hobby: - 篮球 - 编程 address: null 列表转YAML - Python - Java - 100 - true注意YAML中false/true/null对应Python的False/True/None是语法规范。2. 进阶格式化输出指定缩进用indent参数指定缩进空格数让YAML字符串更整洁yaml_stryaml.safe_dump(python_dict,sort_keysFalse,allow_unicodeTrue,indent4)print(yaml_str)输出会以4个空格缩进嵌套结构更清晰。二、核心基础YAML字符串 → Python数据load将YAML格式的字符串解析为Python原生数据字典/列表/基本类型严禁使用原生yaml.load()存在代码注入安全风险6.0版本已弱化该方法官方唯一推荐yaml.safe_load()仅解析YAML基础类型安全无风险。1. 基础解析对应字典/列表的YAML字符串# 1. 解析为Python字典的YAML字符串yaml_str_dict name: 李四 age: 30 is_worker: true salary: 15000.5 skill: - Python - SQL address: 北京市 python_data1yaml.safe_load(yaml_str_dict)print(YAML转字典,python_data1)print(获取指定值,python_data1[name])# 直接按字典取值print(数据类型,type(python_data1))# class dict# 2. 解析为Python列表的YAML字符串yaml_str_list - 苹果 - 香蕉 - 橘子 - 99 python_data2yaml.safe_load(yaml_str_list)print(YAML转列表,python_data2)print(数据类型,type(python_data2))# class list输出结果YAML转字典 {name: 李四, age: 30, is_worker: True, salary: 15000.5, skill: [Python, SQL], address: 北京市} 获取指定值 李四 数据类型 class dict YAML转列表 [苹果, 香蕉, 橘子, 99] 数据类型 class list2. 特殊情况空YAML/无效YAMLyaml.safe_load()解析空字符串会返回None解析语法错误的YAML会抛出yaml.YAMLError异常建议加异常捕获empty_yamlprint(yaml.safe_load(empty_yaml))# None# 异常捕获示例invalid_yamlname: 张三: 李四# 语法错误try:yaml.safe_load(invalid_yaml)exceptyaml.YAMLErrorase:print(YAML解析失败,e)三、实际开发常用读写YAML配置文件日常项目中YAML主要用作配置文件如config.yamlPyYAML可直接结合文件对象实现读取配置和写入配置核心还是safe_load()和safe_dump()。准备工作新建YAML配置文件在代码同目录下新建config.yaml内容如下含注释、嵌套典型配置文件格式# 项目配置文件project:name:PyYAML-Demoversion:1.0.0author:张三server:host:127.0.0.1port:8080debug:truedatabase:url:mysql://root:123456localhost:3306/testpool_size:201. 读取YAML配置文件将配置文件内容解析为Python字典方便代码中获取配置项# 方法1open() 手动关闭文件推荐新手withopen(config.yaml,r,encodingutf-8)asf:configyaml.safe_load(f)# 直接传入文件对象# 读取配置项字典嵌套取值print(项目名,config[project][name])print(服务端口,config[server][port])print(数据库地址,config[database][url])# 方法2简化写法同效果configyaml.safe_load(open(config.yaml,r,encodingutf-8))必加encodingutf-8避免读取YAML文件时中文乱码。输出结果项目名 PyYAML-Demo 服务端口 8080 数据库地址 mysql://root:123456localhost:3306/test2. 写入YAML配置文件将Python数据写入YAML文件覆盖/新建适合动态生成配置# 要写入的配置数据new_config{project:{name:New-Demo,version:2.0.0},server:{host:0.0.0.0,port:9090,debug:False}}# 写入文件w模式覆盖原有内容a模式追加不推荐YAMLwithopen(new_config.yaml,w,encodingutf-8)asf:yaml.safe_dump(new_config,streamf,# 写入到文件流sort_keysFalse,allow_unicodeTrue,indent4# 缩进4个空格增强可读性)执行后代码同目录会生成new_config.yaml内容为格式化后的YAML中文和顺序均保留。四、拓展用法批量读取多个YAML文档YAML支持在一个文件/字符串中写多个文档用---分隔解析时用yaml.safe_load_all()返回一个生成器可遍历获取每个文档的Python数据。1. 解析多文档YAML字符串multi_yaml_str name: 张三 age: 25 --- name: 李四 age: 30 --- name: 王五 age: 35 # 解析多文档docsyaml.safe_load_all(multi_yaml_str)# 遍历生成器获取每个文档的字典fordocindocs:print(doc)输出结果{name: 张三, age: 25} {name: 李四, age: 30} {name: 王五, age: 35}2. 读取多文档YAML文件新建multi_config.yaml内容# 文档1user1:name:张三age:25---# 文档2user2:name:李四age:30读取代码withopen(multi_config.yaml,r,encodingutf-8)asf:fordocinyaml.safe_load_all(f):print(doc)五、避坑指南6.0.3版本关键注意点永远不用yaml.load()无安全校验恶意YAML字符串可执行任意Python代码造成安全漏洞safe_load()完全满足基础用法中文必加allow_unicodeTruedump/写入文件时不加会导致中文转Unicode可读性极差字典顺序必加sort_keysFalsePyYAML默认按字母排序字典key会打乱业务逻辑的键顺序文件操作必指定encodingutf-8读写YAML文件时不加会在Windows系统中出现中文乱码YAML语法规范YAML的键值对用key: 值冒号后必须加空格列表项用- 项横杠后必须加空格语法错误会触发yaml.YAMLError。核心用法总结PyYAML6.0.3 的基础用法围绕4个核心方法展开覆盖所有日常场景yaml.safe_dump(data, ...)Python数据 → YAML字符串安全序列化yaml.safe_load(yaml_str)YAML字符串 → Python数据安全解析yaml.safe_dump(data, stream文件对象, ...)Python数据 → YAML文件yaml.safe_load(文件对象)YAML文件 → Python数据最常用读取配置。关键参数三板斧sort_keysFalse allow_unicodeTrue encodingutf-8解决90%的格式/编码问题。