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 搞定的。

转载于:https://www.cnblogs.com/Canace22/p/yaml_file_change.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值