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 Tkinter基础控件用法
Sep 03 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
May 06 Python
Python实现遍历数据库并获取key的值
May 17 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
Python构建图像分类识别器的方法
Jan 12 Python
Python自定义一个异常类的方法
Jun 27 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
Python通过socketserver处理多个链接
Mar 18 Python
Python3压缩和解压缩实现代码
Mar 01 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 Python
图文详解matlab原始处理图像几何变换
Django中session进行权限管理的使用
python利用pandas分析学生期末成绩实例代码
使用pandas生成/读取csv文件的方法实例
python自动化八大定位元素讲解
python实现简单聊天功能
Python re.sub 反向引用的实现
Jul 07 #Python
You might like
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
运算符&&的三个不同层次
2013/04/07 Javascript
js 走马灯简单实例
2013/11/21 Javascript
中止javascript执行的方法
2014/02/14 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
JS实现京东商品分类侧边栏
2020/12/11 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
python 装饰器功能以及函数参数使用介绍
2012/01/27 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
Python爬取成语接龙类网站
2018/10/19 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
简述数组与指针的区别
2014/01/02 面试题
二年级小学生评语
2014/04/21 职场文书
中药学自荐信
2014/06/15 职场文书
2015年公务员工作总结
2015/04/24 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
Vue的生命周期一起来看看
2022/02/24 Vue.js