1

使用 ConfigParser 模块,我尝试读取配置文件,以便我可以安全地允许用户编辑应用程序的设置并在脚本之间共享这些配置。这对于主脚本来说非常有效。但是,有一个辅助脚本被调用,它在同一位置读取同一配置文件,但返回找不到该位置的错误。两个脚本都位于同一个目录中,application/bin/ 配置文件位于application/conf/为了在主脚本中成功引用配置文件,我使用了以下完美运行的代码。

config = ConfigParser.ConfigParser()
config.readfp(open('../conf/settings.conf'))

当辅助脚本使用相同的代码执行时,它报告该位置不存在?我使用了 logger 模块并让它记录了 sys.path[0] ,它正确地返回了与主脚本相同的 bin 文件夹。我在这里可能缺少一些简单的东西吗?

也欢迎任何针对此类问题的故障排除提示。

4

1 回答 1

1

您可以更喜欢使用dirnameand __file__

from os.path import dirname, join
config = ConfigParser.ConfigParser()
config_fn = join(dirname(__file__), '..', 'conf', 'settings.conf')
config.read(config_fn)

根据您启动应用程序的方式(python bin/app.py 或 python app.py),“..”将不正确。通过从 .py 文件的目录开始,您将始终能够使用该方法构建从 .py 到 .conf 的路径。

于 2012-01-02T15:41:01.823 回答