3

堆栈溢出,

下面是我脚本的前几行:

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,这表明脚本的执行目录是终端指向的目录。

是什么赋予了?

我该怎么做才能指向配置文件?

4

1 回答 1

4

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

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): 
    ...
于 2013-01-07T20:02:54.723 回答