Python常用配置文件ini、json、yaml读写总结


Posted in Python onJuly 09, 2021

本文参考文章,出于学习目的,写本文。

开发项目时,为了维护一些经常需要变更的数据,比如数据库的连接信息、请求的url、测试数据等,需要将这些数据写入配置文件,将数据和代码分离,只需要修改配置文件的参数,就可以快速完成环境的切换或者测试数据的更新,常用的配置文件格式有ini、json、yaml等,下面简单给大家介绍下,Python如何读写这几种格式的文件。

1、ini格式

ini 即 Initialize ,是Windows中常用的配置文件格式,结构比较简单,主要由节(Section)、键(key)和值(value)组成。每个独立部分称之为section,每个section内,都是key(option)=value形成的键值对。

Python常用配置文件ini、json、yaml读写总结

在Python3中,使用自带的configparser库(配置文件解析器)来解析类似于ini这种格式的文件,比如config、conf。
可以看到,ini只有字典一种格式,且全部都是字符串。

1.1 ini的读取删除操作

import configparser

#使用前,需要创建一个实例
config = configparser.ConfigParser()
#读取并打开文件
config.read('test.ini',encoding='utf-8')
#获取sections,返回列表
print(config.sections())
#[db,data]
#获取sections下的所有options
print(config.options('db'))
#['user', 'pwd', 'host', 'database', 'port']
#获取指定section下指定的options
print(config.get('db','user'))
# root
#获取section中所有键值对
print(config.items('data'))
#[('admin_user', 'tong'), ('admin_pwd', '123456')]
#删除整个section
config.remove_section('data')
#删除某个section下的key
config.remove_option('db','host')
print(config.items('db'))

1.2 ini 写入操作

写入操作可能会比较少

import configparser

config=configparser.ConfigParser()
config['url']={'url':'www.baidu.com'} #类似于字典操作

with open('example.ini','w') as configfile:
    config.write(configfile)

Python常用配置文件ini、json、yaml读写总结

2.JSON格式

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,这些特性使json成为理想的数据交换语言,易于阅读和编写,同时易于机器解析和生成。

2.1 JSON示例格式

{
  "name":"smith",
  "age":30,
  "sex":"男"
}

Python中使用内置模块json操作json数据,使用json.load()和json.dump方法进行json格式文件读写:

# 读取json
import json
with open('test1.json') as f:
    a = json.load(f)
print(a)

# 写入json
import json
dic ={
    "name" : "xiaoming",
    "age" : 20,
    "phonenumber" : "15555555555"
}

with open("test2.json", "w") as outfile:
    json.dump(dic, outfile)

有关json更多的介绍请看链接

3. yaml格式

yaml全称Yet Another Markup Language(另一种标记语言),它是一种简洁的非标记语言,以数据为中心,使用空格,缩进,分行组织数据,解析成本很低,是非常流行的配置文件语言。

3.1 yaml的语法特点

  • 大小写敏感
  • 使用缩进表示层级关系,缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 字符串不需要使用引号标注,但若字符串包含有特殊字符则需用引号标注
  • 注释标识为#

3.2 yaml示例

case1:
 info:
  title: "正常登陆"
  url: http://192.168.1.1/user/login
  method: "POST"
 json:
  username: "admin"
  password: "123456"
 expected:
  status_code: 
  - 200
  - 300
  content: "user_id"

读取后效果:

Python常用配置文件ini、json、yaml读写总结

yaml支持的数据结构有三种

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

Python中使用pyyaml处理yaml格式数据

使用前,需要进行安装:

pip install pyyaml

3.3 yaml文件读取

用python读取yaml文件,先用open方法读取文件数据,再通过load方法转成字典。

import yaml
with open("testyaml.yaml", encoding='utf-8') as file:
    data = yaml.safe_load(file)
    print(data)
    print(data['case1']['json'])
    print(data['case1']['json']['username'])

3.4 yaml文件的写入

import yaml
#定义一个字典

content = {
    'id': 1,
    'text': 'programming languages',
    'members': ['java', 'python', 'python', 'c', 'go', 'shell'],
    'next': {'a':1,'b':2}
}

with open('test3.yaml', 'w', encoding='utf-8') as file:
    yaml.dump(content, file, default_flow_style=False, encoding='utf-8', allow_unicode=True)

以上有三种数据类型,写入文件效果为:

Python常用配置文件ini、json、yaml读写总结

当然手动写也没有问题。

到此这篇关于Python常用配置文件ini、json、yaml读写总结的文章就介绍到这了,更多相关Python读写ini、json、yaml配置文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
举例讲解Python中的Null模式与桥接模式编程
Feb 02 Python
基于python select.select模块通信的实例讲解
Sep 21 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
如何在python中实现随机选择
Nov 02 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
基于python实现雪花算法过程详解
Nov 16 Python
通过实例解析Python调用json模块
Dec 11 Python
Python hashlib常见摘要算法详解
Jan 13 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
python如何处理程序无法打开
Jun 16 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
python利用pandas分析学生期末成绩实例代码
使用pandas生成/读取csv文件的方法实例
python自动化八大定位元素讲解
python实现简单聊天功能
Python re.sub 反向引用的实现
Jul 07 #Python
You might like
一个程序下载的管理程序(二)
2006/10/09 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
document.getElementBy("id")与$("#id")有什么区别
2013/09/22 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
Python比较两个图片相似度的方法
2015/03/13 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python导入txt数据到mysql的方法
2015/04/08 Python
Python的Django框架使用入门指引
2015/04/15 Python
python虚拟环境迁移方法
2019/01/03 Python
django 微信网页授权登陆的实现
2019/07/30 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python如何爬取动态网站
2020/09/09 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
工作疏忽检讨书
2014/01/25 职场文书
机电系毕业生求职信
2014/07/11 职场文书
妇女工作先进事迹
2014/08/17 职场文书
科学发展观活动总结
2014/08/28 职场文书
召开会议通知范文
2015/04/15 职场文书
参加招聘会后的感想
2015/08/10 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫
Python使用永中文档转换服务
2022/05/06 Python
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers