关于python:如何根据正在执行的脚本的相对路径加载配置文件?

How can I load a configuration file based on the relative path from the script being executed?

堆栈溢出

下面是我的脚本的前几行:

1
2
3
4
5
6
7
8
9
10
11
12
from ConfigParser import SafeConfigParser
from docopt import docopt
import core as scrappy

ARGS = docopt(__doc__, version=scrappy.__version__)
if not ARGS['PATH']:
    ARGS['PATH'] = './'

# load config file
CFG = SafeConfigParser()
if not CFG.read(ARGS['--cfg']):  # call to CFG.read also loads file if it exists
    raise IOError('Configuration file not found.')

我试图读取的配置文件与上述脚本位于同一目录中。默认情况下,docopt将此文件的路径设置为./file.conf(我已经用file.conf测试过,结果相同)。

总是调用脚本的最后一行,这意味着找不到文件。我通过打印os.getcwd的输出确认了这一点,显示脚本的执行目录是终端指向的目录。

给出了什么?

如何指向配置文件?


使用__file__预定义的模块属性。这样地:

1
2
3
4
5
module_dir = os.path.dirname(__file__)
CFG = SafeConfigParser()
cfg_full_path = os.path.join(module_dir, ARGS['--cfg'])
if not CFG.read(cfg_full_path):
    ...