Python2与Python3读取ini配置文件的差异

2018-12-19  本文已影响0人  MonSoonmmm

首先直接上完整代码,详细解释请看下面:

PS:大佬们请直接忽略本篇文章,写的很简单,主要是想记录下,免得自己忘了,下次还得百度一遍,emmmmmm,如果哪里有问题,请评论区喷我~~O(∩_∩)O哈哈哈

.ini配置文件示例:

[local]#这是section
host=127.0.0.1#这是key
port=3306
password=123456
user=root
[demo]
host="xxx.mysql.rds.aliyuncs.com"
user = "xxx"
password ="xxx"
port=3306
#根据section和key可以唯一找到一条记录,section,key都可以存在多条

python2:

import ConfigParser
import os
def get_conf(section, key, setting):
    conf_file = ConfigParser.ConfigParser()
    conf_file.read(os.path.join(os.getcwd(), 'conf.ini'))
    res = conf_file.get(section, key)

python3

import configparser
import os
class ReadDBConf:
    conf = configparser.ConfigParser()
    cur_path = os.path.dirname(os.path.realpath(__file__))+'/db.ini' #此处db.ini前面的 / 很重要不要漏掉
    conf.read(cur_path)
    host = conf.get('demo','host')

1.导包差异

在python3中导包

import configparser

python2则是

import ConfigParser

2.read()方法使用差异,请仔细看前面的代码

3.相同的地方

.ini格式的文件必须和相应.py文件在同一个包下面,原因在于read()方法接收的是一个.ini文件的绝对路径,不支持相对路径,注意获取的是配置文件的绝对路径,而不是程序运行时路径,程序入口不同时,运行时路径不同。例如下图


image.png

4.在.py文件中要获取到当前包所在的路径然后拼接上.ini文件名,获取路径需要先导入:

import os

python3代码:

cur_path = os.path.dirname(os.path.realpath(__file__))+'/db.ini'

python2代码:

cur_path = os.path.join(os.getcwd(), 'conf.ini')
上一篇下一篇

猜你喜欢

热点阅读