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 划 ...
随机推荐
- PostgreSQL9.6.2的WINDOWS下安装
下载链接:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows 安装链接:http://www.cn ...
- 用Python实现几种排序算法
#coding=utf-8 # 1 快速排序算法 def qksort(list): if len(list)<=1: return list else: pivot = list[0] les ...
- Asp.net core 2.0.1 Razor 的使用学习笔记(三)
ASP.net core 2.0.0 中 asp.net identity 2.0.0 的基本使用(二)—用户账户及cookie配置 修改用户账户及cookie配置 一.修改密码强度和用户邮箱验证规则 ...
- Codeforce D. Make a Permutation!
D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- python 将验证码保存到本地 读取 写入
#验证码 #读取验证码网址.打开本地路径.写入.输入验证码 downpicture = urllib.request.urlopen(SecretCodeUrl).read() local = ope ...
- poj 1423 打表/斯特林公式
对于n位数的计算,我们可以采用(int)log10(n) + 1的方法得到n的位数 第一种方法: 对于n!位数的计算,log10(n!) = log10(1) + log10(2) + ... + l ...
- Python之Django rest_Framework(2)
实例化: v1 = ["view.xxx.path.Role","view.xxx.path.Group",] 可以循环,循环出来的每一个不能实例化 如果把v1 ...
- wpf阻止键盘快捷键alt+space,alt+F4
/// <summary> /// 阻止 alt+f4和alt+space 按键 /// </summary> /// <par ...
- java中Queue简介
Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 offer,add区别:一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝.这时新的 offer 方法 ...
- Java多线程基础(二)
信号量Semaphore,类似于锁的功能,用于多线程中对一组资源的控制. acquire方法用于尝试获取一个资源,未获取前将一直等待.release用于释放一个资源,release的前提是已经获得了一 ...