1

ConfigParser モジュールを使用して構成ファイルを読み込もうとしています。これにより、ユーザーがアプリケーションの設定を安全に編集し、これらの構成をスクリプト間で共有できるようになります。これは、メイン スクリプトに対して完全に機能しています。ただし、呼び出されるセカンダリ スクリプトがあり、同じ場所にある同じ構成ファイルを読み取りますが、場所が見つからないというエラーを返します。両方のスクリプトは同じディレクトリ内にありapplication/bin/ ます。構成ファイルは次の場所にありますapplication/conf/。メイン スクリプトで構成ファイルを正常に参照するには、完全に機能する次のコードを使用します。

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

セカンダリ スクリプトが同じコードで実行されると、場所が存在しないと報告されますか? logger モジュールを使用して、メイン スクリプトと同じ bin フォルダーを正しく返す sys.path[0] をログに記録しました。ここで見逃している簡単なものはありますか?

また、このような問題のトラブルシューティングのヒントも大歓迎です。

4

1 に答える 1

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 へのパスをいつでも作成できます。

于 2012-01-02T15:41:01.823 に答える