一尘不染

Python ConfigParser无法正确搜索.ini文件(Ubuntu 14,Python 3.4)

python

问题:代码编译正常,但是每当我调用read_db_config函数时,都会出现“异常:在mysql_config.ini文件中找不到mysql”

该文件位于同一目录中,但主脚本使用以下命令向上运行两个目录

import sys 
from Config.MySQL.python_mysql_dbconfig import read_db_config

我是python的新手,已经到处搜索了,但是我似乎无法指出我的问题

码:

from ConfigParser import ConfigParser

def read_db_config(filename='mysql_config.ini', section='mysql'):

    # create parser and read ini configuration file
    parser = ConfigParser()
    parser.read(filename)

    # get section, default to mysql
    db = {}
    if parser.has_section(section):
        items = parser.items(section)
        for item in items:
            db[item[0]] = item[1]
    else:
        raise Exception('{0} not found in the {1}  file'.format(section, filename))

    return db

mysql_config.ini:

[mysql]
database = testdba
user = root
password = test
unix_socket = /opt/lampp/var/mysql/mysql.sock

阅读 133

收藏
2020-12-20

共1个答案

一尘不染

如果您使用 相对路径 作为文件名或目录名,则python会在 当前工作目录$PWDbash中的变量)中查找(或创建)它们。

如果您想让它们相对于当前的python文件,可以使用(python 3.4)

from pathlib import Path
HERE = Path(__file__).parent.resolve()
CONFIG_PATH = HERE / '../etc/mysql_config.ini'

或(python 2.7)

import os.path
HERE = os.path.abspath(os.path.dirname(__file__))
CONFIG_PATH = os.path.join(HERE, '../etc/mysql_config.ini')

如果您的mysql_config.ini文件位于etcpython脚本下面的目录中。

您当然可以始终使用绝对路径(以/;开头/home/someuser/mysql_config.ini)。

2020-12-20