尝试使用ConfigParser读取文件时出现IOError

时间:2014-11-20 04:52:42

标签: python python-2.7

我正在尝试在ConfigParser文件中使用db_connection.py并阅读配置,但ConfigParser无法读取我的文件。我也改变了文件权限,但是没有帮助。继承我的代码

import ConfigParser
CONFIG = ConfigParser.ConfigParser()

if not CONFIG.read('config.ini'):
    raise IOError, 'cannot load config.ini'

DBNAME = CONFIG.get('database', 'name')

我的目录结构

├── helpers.py
├── logs
├── models
│   ├── config.ini
│   ├── db_connection.py
│   ├── __init__.py
└── state-codes.md

1 个答案:

答案 0 :(得分:1)

代码将配置文件路径指定为相对路径。该文件将从当前工作目录中检索。

如果您运行的程序不在配置文件所在的同一目录中,则应调整文件路径。

例如,如果在models目录的父目录中运行程序,则应相应指定:

import os

...

if not CONFIG.read(os.path.join('models', 'config.ini')):  # models/config.ini
    raise IOError, 'cannot load config.ini'

或者您可以使用模块的__file__属性来创建相对于模块的路径。

import os

config_path = os.path.join(os.path.dirname(__file__), 'config.ini')

if not CONFIG.read(config_path):
    raise IOError, 'cannot load config.ini'

两种解决方案都取决于当前的工作目录。或者,您可以指定绝对路径。或者使配置文件路径从外部传递(命令行参数,环境变量,......)

相关问题