yml 文件操作方法
文件读取方法示例:
import yaml
fr = open('yml_file_address', 'r',encoding='utf-8')
data = yaml.load(fr)
print(data)
fr.close()
关于 yml 文件的操作,有一个专门的库 yaml ,yaml 直接给出了一个把 yml 文件读取到字典里的方法 load,所以要读取 yml 文件非常简单,只需要引入 yaml 库,用 python 的 open 方法打开文件,用 load 方法读取文件,就可以轻而易举的读取 yml 文件到字典里了。当然其中还是有点坑的,那就是解码的问题,因为默认读取的文件不是字符编码格式,所以要把它转换为字符编码,再传给 load。
文件写入方法示例:
import yaml
fr = open('yml_file_address', 'w',encoding='utf-8')
temp = {"fruits":"banana"}
data = yaml.dump(temp,fr, default_flow_style=False)
print(data)
fr.close()
yaml 库提供了一个 dump 方法,只需要打开文件,给出要写入的参数(字典形式等),调用 dump 方法就可以很快捷的写入信息到 yml 文件啦
这两个方法在项目中的运用:
修改配置文件昵称
def changeUserName(user):
fr = open('yml_file_address', 'r',encoding='utf-8')
data = yaml.load(fr)
fr.close()
data['robot_name_cn'] = user
fr = open('yml_file_address', 'w', encoding='utf-8')
yaml.dump(data, fr, allow_unicode=True, default_flow_style=False)
fr.close()
return data['robot_name_cn']
修改配置文件密码
def changePassword(password):
fr = open('yml_file_address', 'r',encoding='utf-8')
data = yaml.load(fr)
fr.close()
data['password'] = password
if 'password' in data.keys():
fr = open('yml_file_address', 'w', encoding='utf-8')
yaml.dump(data, fr, allow_unicode=True, default_flow_style=False)
fr.close()
return data['password']
else:
fr = open('yml_file_address', 'a', encoding='utf-8')
yaml.dump(data, fr, allow_unicode=True, default_flow_style=False)
fr.close()
return data['password']
这是两个修改配置信息的函数 changeUserName() 和 changePassword(),故名思议,就是修改密码和昵称,两个函数的思路都是一样的,先读取配置文件,把相应的信息替换进配置文件里,然后通过写入方法,把这两个信息写入文件中。
其中的难点可能就是解码和生成 yaml 文件的样式问题了。一开始各种报解码错误,在打开文件的时候加一个 encoding,在写入函数中加一个 allow_unicode=True 搞定了。
解决替换信息在文件中的样式问题, 是在写入函数中加入 default_flow_style=False 搞定的。
yml 文件操作方法的更多相关文章
- C#File类常用的文件操作方法(创建、移动、删除、复制等)
File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量很多时候都是路径path ...
- Drupal8开发教程:认识.info.yml文件
YAML 文件是新引入的重要项目文件,在 Drupal 8 中,无论是模块.主题还是安装配置文件,都需要 .info.yml 文件来为其存储项目相关的基础信息. 在 Drupal 中,.info.ym ...
- yml文件数据的简洁表达方法(Hashes to OpenStruct)
通过ruby编写测试脚本的时候,我还是喜欢采用yml来管理测试数据,就像以前的文章(Selenium WebDriver + Grid2 + RSpec之旅(五))提到的一样,但是在引用yml中的数据 ...
- Opencv探索之路(十九):读写xml和yml文件
有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理.一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作.那么如果遇到这样 ...
- UnityEditor下文件操作方法汇总(Unity3D开发之二十四)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/50595585 ...
- application.properties 文件和 application.yml 文件的区别
yml文件的好处,天然的树状结构,方便查看,最终会转成application.properties 注意点: 1,原有的key,例如spring.jpa.properties.hibernate.di ...
- 转:spring boot log4j2配置(使用log4j2.yml文件)---YAML 语言教程
转:spring boot log4j2配置(使用log4j2.yml文件) - CSDN博客http://blog.csdn.net/ClementAD/article/details/514988 ...
- YML文件中ipv6地址输入格式
关于YML文件格式可以百度,这里只说ipv6:yml文件是注重格式的不能用tab键代替空格 ipv4 :10.1.202.9 ipv6: 2001:202::6e4:f32b:c19c:4760 端口 ...
- yml文件搞一波
引用https://www.cnblogs.com/zslli/p/8717483.html https://www.cnblogs.com/baoyi/p/SpringBoot_YML.html 划 ...
随机推荐
- 在ASP.NET Core中通过EF Core实现一个简单的全局过滤查询
前言 不知道大家是否和我有同样的问题: 一般在数据库的设计阶段,会制定一些默认的规则,其中有一条硬性规定就是一定不要对任何表中的数据执行delete硬删除操作,因为每条数据对我们来说都是有用的,并且是 ...
- ora-01190和ora-01110的解决方法
SQLPLUS>ALTER DATABASE DATAFILE 2 ONLINE; ALTER DATABASE DATAFILE 2 ONLINE * ERROR 位于第 1 行: ORA-0 ...
- python_如何修改装饰器中参数?
案例: 为分析程序内哪些函数执行时间开销较大,我们需定义一个带timeout参数的装饰器 需求: 统计被装饰函数的运行时间 时间大于timeout时,将此次函数调用记录到log日志中 运行时可以修改t ...
- Linux实践篇--crontab定时任务
原文出处:http://www.cnblogs.com/tracy/archive/2011/12/27/2303788.html.感谢作者的无私分享 一. Crontab 介绍 ...
- CopyOnWriteArrayList集合排序异常问题
1.集合自定义排序实现 对List集合的自定义排序想必大家都知道要使用如下的方式,通过实现Comparator接口并实现compare方法来实现. /** * * @方法名 changeChain * ...
- Ubuntu中使用dnw工具:没有找到/dev/secbulk0
Ubuntu中使用dnw动机: 一. 之前没有用ubuntu中的dnw,想试试. 二. 因为换了win10系统,怕搞不定win10中dnw的驱动,想着在ubuntu中不用禁用数字签名啥的比较省心.(事 ...
- sed替换文本
[root@localhost.localdomain home]#cat test ### @2=1492785988 /* INT meta=0 nullable=0 is_null=0 */ # ...
- python简单分布式demo
A服务器是master,B服务器为worker, A服务器上执行taskManger.py # coding:utf-8 import random,time,Queue from multiproc ...
- openstack开发基础
- 《.NET 设计规范》第 6 章:扩展性设计
第 6 章:扩展性设计 6.1 扩展机制 考虑用不包含任何虚成员或受保护的成员的非密封类来为框架提供扩展性.这种方法所提供的扩展性广受用户欢迎,而且它的开销也不高. 考虑将受保护的成员用于高级的定制方 ...