使用ConfigParser模块我试图读取配置文件,这样我就可以安全地允许用户编辑应用程序的设置并在脚本之间共享这些配置。
这对于主脚本来说非常有效。但是,有一个辅助脚本被调用,它在同一位置读取相同的配置文件,但返回一个无法找到该位置的错误。
这两个脚本都位于同一目录application/bin/
中
配置文件位于application/conf/
为了在主脚本中成功引用配置文件,我使用以下代码,它可以很好地工作。
config = ConfigParser.ConfigParser()
config.readfp(open('../conf/settings.conf'))
当辅助脚本使用相同的代码执行时,它报告该位置不存在?我使用了记录器模块并让它记录了sys.path [0],它正确地返回了与主脚本相同的bin文件夹。我可能在这里缺少一些简单的东西吗?
此外,欢迎任何有关此类问题的故障排除提示。
答案 0 :(得分:1)
您可以使用dirname
和__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的路径。