首页 > 编程语言 >常见配置文件在Python中的使用

常见配置文件在Python中的使用

时间:2023-04-28 17:34:46浏览次数:43  
标签:配置文件 Database Python 常见 yaml json toml config

 

配置文件主要为了存储常用的常量,如数据库的信息,通用的账号和密码等。常见的配置文件格式有ini,yaml,toml,json,env等,在做自动化测试的时候,它们都起什么样的作用?在什么样的场合下应用哪些配置文件?

 

一、ini配置文件

简介:

ini配置文件是最直接的配置文件,也是最简单的配置文件,将变量值通过键值对的方式存储。

 

特点

  (1)支持注释,可使用#或;注释

  (2)便于管理,[标签]将变量分组
  (3)便于阅读,键值对的方式,使用冒号或等号均可
  (4)支持字符串及数值数据类型,适用于简单的字符串和数值的键值对
  (5)读写ini配置文件使用内置模块configparser,无需依赖第三方模块

缺点

  (1)读取ini配置字段值的时候,需频繁通过标签和键Kev获取Value值。
  (2)支持的数据类型有限,仅支持1个层级的数据结构,如多层级的字典将被理解为1个字符串。
  即不论存储的是字典还是列表,读取的值是字符出格式,需要通过解析转换,比较麻烦。

 

创建ini文件

# default
[default]
username = "张三"
password = "123456"

#Database
[Database]
host = "127.0.0.1"
user = "root"
pwd = "123456"
port = 3306
db = "test"

[test]
nums = {"one":1,"two":2}
l = ['1','2','3','4']

  

读取ini配置文件

from configparser import ConfigParser

config = ConfigParser()
config.read('config.ini', encoding='utf-8')

# 获取全部标签
sections = config.sections()
print(sections)

# 获取某个标签
Database = config['Database']
print(Database)

# 获取某个Key的值
# 方法1,通过获取标签后再获取对应的键值
host = Database['host']
print(host)

# 方法2:使用get方法
user = config.get('Database','user')
print(user)

# 方法3:直接获取
pwd = config['Database']['pwd']
print(pwd)

  

写入ini配置文件

from configparser import ConfigParser

config = ConfigParser()

# 方法1:一次性将标签的所有值写入
config['Database'] = {

       "host": "127.0.0.1",
       "user": "root",
       "pwd": "123456",
       "port": 22,
       "db": "test"

}

# 方法2:单独写入
config['default'] = {}
default = config['default']
default['username'] = 'zhangsan'
default['password'] = '123456'

# 打开配置文件,写入标签值
with open('config.ini', 'w') as f:
  config.write(f)

  

 

二、yaml配置文件

简介

yaml配置文件刚好可以弥补下ini配置文件支持数据类型较少的缺点,yaml文件的特点是支持结构化的数据,如字典和列表,所以,如果层级结构较多的数据场景还是建议使用yaml配置文件。

 

特点

(1)支持注释,#表示注释

(2)空格缩进区分层级,且空格数量不要求,对齐即可

(3)适用于有层次结构的数据,如字典

(4)大小写敏感

(5)依赖第三方PyYAML模块

(6)方便重复内容的引用

缺点

(1)文件内容较多时,难以阅读和编辑。 主要也是空格不可见,使用空格相同个数表示同一层级,难以阅读,容易耗费时间在数空格对齐层级上,且存在制表符Tab键可能被使用,但很难排查

 

下载

pip install PyYAML

  

创建yaml配置文件

code: 200
students:
    -
      name: 张三
      age: 12
      hobby:
          - 打篮球
          - 跑步
    -
      name: 李四
      age: 17
      hobby:
          - 打羽毛球
          - 看书

  

读取yaml配置文件

import yaml

def read_yaml(path):
    with open(path, 'r') as f:
        data = yaml.safe_load(f.read(), Loader=yaml.FullLoader)
        print(data)


if __name__ == '__main__':
    yaml_path = "y.yml"
    read_yaml(yaml_path)

  

写入yaml配置文件

import yaml

def write_yaml(path):
  d1 = {"code":200,"students":[{"name":"张三","age":12,"hobby":["打篮球","跑步"]},{"name":"李四","age":17,"hobby":["打羽毛球","看书"]}]}

  with open(yaml_path ,'a') as f:
    yaml.dump(d1,f,allow_unicode=True)

if __name__ == '__main__':
    yaml_path = "y.yml"
    write_yaml(yaml_path)

  

 

三、json配置文件

简介

json是常见的一种数据格式,而json配置文件主要是针对json格式的数据。

 

特点

(1)支持多层级数据结构

(2)Key和字符串必须使用双引号

 

创建config.json配置文件

{
   "Database":{
       "host": "127.0.0.1",
       "user": "root",
       "pwd": "123456",
       "port": 22,
       "db": "test"
   }
}

  

读取json配置文件

import json

with open('config.json') as f:
    config = json.load(f)['Database']
    print(config)

  

写入json配置文件

import json

db_json = {
   "Database":{
       "host": "127.0.0.1",
       "user": "root",
       "pwd": "123456",
       "port": 22,
       "db": "test"
   }
}
with open('config.json', 'w') as f:
    json.dump(db_json,f)

  

四、toml配置文件

简介

toml是前GitHub CEO, Tom Preston-Werner,于2013年创建的语言,其目标是成为一个小规模的易于使用的语义化配置文件格式。toml配置文件可读性强,并且易于编辑

 

特点

(1)支持注释,#表示注释

(2)大小写敏感

(3)便于管理,使用[标签]将变量分组

(4)字符串必须使用单引号或双引号

(5)布尔值必须存储为true和false

(6)支持数据类型较多,如字符串,数值,日期,数组,字典

(7)使用键=值的方式存储

(8)支持“嵌套表”概念

 

创建config.toml配置文件

[Database]
host = "127.0.0.1"
user = "root"
pwd = "123456"
port = 3306
db = "test"

[Database.One]
l1   = [ "1", "2", "3", "4"]

[Database.Two]
a = 1

  

下载

pip install toml

  

读取toml配置文件

import toml

config = toml.load('config.toml')

# 获取标签内容方式1:
Database1 = config['Database']
print(Database1)

# 获取标签内容方式2:
Database2 = config.get('Database')
print(Database2)

# 获取键值方式1:
host1 = config['Database']['host']
print(host1)

# 获取键值方式2:
host2 = config.get('Database').get('host')
print(host2)

  

写入toml配置文件

import toml

Database = {'host': '127.0.0.1', 'user': 'root', 'pwd': '123456', 'port': 3306, 'db': 'test', 'One': {'l1': ['1', '2', '3', '4']}, 'Two': {'a': 1}}

with open('config.toml', 'w') as f:
    toml.dump(Database, f)

  

五、.env配置文件

简介:

.env主要是将变量值通过环境配置的方式存储。

 

特点:

(1)键值对key=value方式存储

(2)Key一般使用大写

缺点:

(1)仅支持字符串,不支持其他类型数据

 

读写.env配置文件

import os

# 设置变量方式1
os.environ.setdefault('MYENV','zhangsan')

# 设置变量方式2
os.environ['MYENV2'] = 'lisi'

# 方式1
user1 = os.environ['MYENV']
print(user1)

# 方式2
user2 = os.environ.get('MYENV2')
print(user2)

  

 

标签:配置文件,Database,Python,常见,yaml,json,toml,config
From: https://www.cnblogs.com/pywen/p/17362756.html

相关文章

  • Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测|附代
    全文下载链接: http://tecdat.cn/?p=27042最近我们被客户要求撰写关于新冠疫情的研究报告,包括一些图形和统计输出。在本文中,该数据根据世界各国提供的新病例数据提供。获取时间序列数据df=pd.read_csv("C://global.csv")探索数据此表中的数据以累积的形式呈现,为了找出每天......
  • ubuntu18.04下 python虚拟环境安装
    #1.安装sudopipinstallvirtualenvsudopipinstallvirtualenvwrapper#2.很容易遇到的bug问题#安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量#在这里配置环境变量时第2)步需要确定virtualenvwrapper的安装目录piplist#查看已安装的包pips......
  • Python中列表遍历使用range和enumerate的区别
    导读这篇文章主要介绍了Python中列表遍历使用range和enumerate的区别,在Python编程语言中,遍历list有range和enumerate方法,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下前言两者的比较只是编程实现上的差异,请不要......
  • PLC写保护,人机写保护等常见问题汇集
    1、冲床 ,把模块改一下,就可以读写。设备改造,就会遇到别人丢的摊子,要去整理。 2、人机也有保护,不让上传到PC,需要密码等,或者上传了,不能编辑。 ......
  • python之cx_Oracle实现本地exe连接oracle数据库执行命令
    代码实现#-*-coding:GBK-*-importosimportcx_Oracle#导入cx_Oracle模块importtimedefgetData():conn=cx_Oracle.connect('username/password@ip:port/orcl')cur=conn.cursor()sql="SELECT*fromUSERwhereUSER_ID=\'......
  • python 编程规范有哪些?
    Python编程规范主要包括代码布局、命名规范、注释规范、函数编写规范等多个方面,下面给出一些常见的编程规范及其示例代码。1.代码布局规范代码布局规范主要是指代码的缩进、行宽、空行、换行等方面,下面是一些常见的代码布局规范:使用四个空格作为一个缩进级别,不要使用制表符......
  • 接口请求的常见方式
    通过接口请求数据的常见方式有以下几种:①GET:向特定的资源发送请求。【请求制定页面信息,并返回实体主体】②POST:向指定资源提交数据进行处理请求,可能导致新的资源的建立或原有资源的修改。【如 提交表单、上传文件等】③PUT:向指定资源位置上上传其最新内容【从客户端向服务器传......
  • 10分钟极速入门Python全栈应用开发
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master1环境搭建dash应用作为Python项目,建议大家从一开始就养成好习惯,使用虚拟环境来构建我们的dash应用运行所需环境,以我最常用的conda为例,终端执行下列命令,创建名为dash-app-dev,Python版本为3.8的虚......
  • Python rangelib.RangeSet类代码示例
    https://vimsky.com/examples/detail/python-ex-rangelib-RangeSet---class.htmlPythonrangelib.RangeSet类代码示例本文整理汇总了Python中rangelib.RangeSet类的典型用法代码示例。如果您正苦于以下问题:PythonRangeSet类的具体用法?PythonRangeSet怎么用?PythonRangeSet使......
  • Python-webdriver_manager的简单使用
     提前祝大家五一快乐(*^▽^*)前言:我们在使用Selenium做UI自动化时都需要手动去下载各个浏览器版本的webdriver,有时我们可能还会遇到跨操作系统去进行测试。以及有时因浏览器自动升级等原因,导致我们不得再去更新对应版本的webdriver。为了解决以上问题,webdriver-m......