Skip to content Skip to sidebar Skip to footer

Python Configparser Cannot Search .ini File Correctly (ubuntu 14, Python 3.4)

Problem: The code compiles fine but when ever i call the read_db_config function i get 'Exception: mysql not found in the mysql_config.ini file' The file is in the same directory b

Solution 1:

if you use relative paths for file or directory names python will look for them (or create them) in your current working directory (the $PWD variable in bash).

if you want to have them relative to the current python file, you can use (python 3.4)

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

or (python 2.7)

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

if your mysql_config.ini file lives in the etc directory below your python script.

you could of course always use absolute paths (starting with a /; i.e. /home/someuser/mysql_config.ini).

Solution 2:

I ran it again but with the modification of adding

parser = configparser.ConfigParser()
parser['mysql'] = {'database': 'testdba',
                   'user' : 'root',
                   'password' : 'test',
                   'unix_socket' : '/opt/lampp/var/mysql/mysql.sock'}
withopen('mysql_config.ini', 'w') as configfile:
parser.write(configfile

and I found that this created the file "mysql_config.ini" not in the directory where the python "read_db_config" was stored but the parent directory of main python module which calls this module. I searched it up a bit and figured out a perment solution the lets me keep the "mysql_config.ini" where I wish.

import configparser 

defread_db_config(dirname = '/opt/Python_MySQL_Email_Receipt_Client/Config/MySQL/', filename='mysql_config.ini', section='mysql'):

# create parser and read ini configuration file

parser = configparser.ConfigParser()
parser.read(dirname + 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

Post a Comment for "Python Configparser Cannot Search .ini File Correctly (ubuntu 14, Python 3.4)"