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

ini格式

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

在Python3中,使用自带的 configparser 库(配置文件解析器)来解析类似于ini这种格式的文件,比如config、conf。

ini读取删除操作

import configparser
#使用前,需要创建一个实例
config = configparser.ConfigParser()
# 读取并打开文件
config.read('test2.ini',encoding='utf-8')

# 获取sections
print(config.sections())
#['db', 'data']

# 获取某section下的所有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('db')

#删除section下的某个k
config.remove_option('db','host')

ini写入操作

import configparser

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

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

config.write(configfile) #将对象写入文件

json格式

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,这些特性使json成为理想的数据交换语言,易于阅读和编写,同时易于机器解析和生成。关于json的使用,之前写过一篇Python处理json总结,大家可以看下。

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)

yaml格式

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

yaml的语法特点:

  • 大小写敏感

  • 使用缩进表示层级关系,缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

  • 缩进时不允许使用Tab键,只允许使用空格。

  • 字符串不需要使用引号标注,但若字符串包含有特殊字符则需用引号标注

  • 注释标识为#

  • - 开头的行表示构成一个数组

yaml格式示例

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

yaml支持的数据结构有三种:

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

  • 纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

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

使用前,需要进行安装

pip install pyyaml

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'])
import yaml
#定义一个字典 content = {
'id': 1,
'text': 'programming languages',
'members': ['java', 'python', 'python', 'c', 'go', 'shell']
} with open('test3.yaml', 'w', encoding='utf-8') as file:
yaml.dump(content, file, default_flow_style=False, encoding='utf-8', allow_unicode=True)

写入的数据带中文,会出现乱码,需要设置allow_unicode=True。

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加QQ:2955637827私聊或加Q群630390733大家一起来学习讨论吧!

Python常用配置文件ini、json、yaml读写总结的更多相关文章

  1. python常用模块之json、pickle模块

    python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...

  2. python接口自动化读取json,yaml配置文件+封装requests+unittest+HTMLRunner实现全自动化

    # coding=utf-8 import json import requests class TestApi(object): """ /* @param: @ses ...

  3. Python常用模块之json模块

    常用模块: 一个Python文件就是一个模块 import xxx 1. 标准模块,Python自带的,如time/random 2. 第三方模块,如连接mysql,需要安装 3. 自己写的Pytho ...

  4. Python常用模块之json、pickle、random、hashlib、collections

    1.json和pickle json用于字符串和Python数据类型间进行转换pickle用于python特有的类型和python的数据类型间进行转换json和pickle均提供了四种方法dumps, ...

  5. python常用模块之json和pickle模块

    json模块 json.dumps     将 Python 对象编码成 JSON 字符串 json.loads       用于解码 JSON 数据.该函数返回 Python 字段的数据类型. pi ...

  6. Python常用模块之json

    本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. SO ...

  7. python 读取配置文件ini ---ConfigParser

    Python读取ini文件需要用到 ConfigParser 模块 关于ConfigParser模块的介绍详情请参照官网解释:https://docs.python.org/2.7/library/c ...

  8. python读取配置文件(ini、yaml、xml)

    python读取配置文件(ini.yaml.xml)  

  9. python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

随机推荐

  1. Java线程的死锁和活锁

    目录 1.概览 2.死锁 2.1.什么是死锁 2.2 死锁举例 2.3 避免死锁 3.活锁 3.1 什么是活锁 3.2 活锁举例 3.3 避免活锁 1.概览 当多线程帮助我们提高应用性能的同时,它同时 ...

  2. Idea中如何导入jar包

    1.首先在idea左上角找到" File ",然后找到 "Project structure" 2.接着选择 " java ",选择后接着会 ...

  3. java运算符与程序逻辑控制

    一.运算符 java中的运算符大致分为四种:数学运算符,关系运算符.逻辑运算符.位运算 1.数学运算符:即咱们平常说的加减乘除运算,这种运算是分先后顺序的,如果想要优先进行运算,建议加上小括号,使其运 ...

  4. go特性-数组与切片

    数组: 复制传递(不要按照c/c++的方式去理解,c/c++中数组是引用传递),定长 切片: 引用传递,底层实现是3个字段 array(数组) + len(长度) +cap(容量) type slic ...

  5. Python中的静态属性、实例属性、静态方法、实例方法之间的区别

  6. 虚拟机VM15 Ubuntu18.04写第一个c程序并实现ssh连接

    输入"su",再输入密码进入根用户 1.开启ssh服务 /etc/init.d/ssh start 若没有安装会出现: (1).安装ssh apt-get install open ...

  7. IDEA社区版(Community)和付费版(UItimate)的区别

    比对类型 Ultimate(终极版,付费) Community(社区版,免费) 语言支持 Java Java Groovy Groovy Kotlin Kotlin Scala(通过插件) Scala ...

  8. Spring Boot 使用 XXL-JOB

    一.配置部署调度中心 1.1 下载源码 https://github.com/xuxueli/xxl-job 1.2 数据库初始化 执行 /xxl-job/doc/db/tables_xxl_job. ...

  9. Zuul 超时设置

    问题描述 使用 Zuul 作为网关,偶发超时问题及第一次调用触发熔断问题 解决方案 超时问题 ribbon: ReadTimeout: 10000 SocketTimeout: 60000 第一次调用 ...

  10. 网络编程原理与UDP实现

    如何发送数据包? Q:当应用程序产生数据的时候,需要去构造数据包并发送到网络上去,但是由谁负责处理呢? A:现代操作系统负责数据包得构造与发送,应用程序只需提供数据. 当应用程序产生数据时,应用程序将 ...