2016-08-31 6 views
0

私はPythonの新機能です。私はこのpythonスクリプトからいくつかのデータを読むために他のプロジェクトによってアクセスされるいくつかのpythonスクリプトを持っています。なぜpythonのプロパティファイルから読み取られた値が機能しないのですか

過去: このPythonスクリプトから他のプロジェクトのバージョン情報を提供する必要があるとすると、私はハードコードされたクラス変数を持っていました。

Now: バージョン情報を提供する方法を変更して、ハードコードの代わりにプロパティファイルを読むことにしました。私は以前にそれが今、私は私のversion.propertiesファイルが

[global] 
version= 1.2 
のように見えます

class Myclass 
    config = ConfigParser.RawConfigParser() 
    config.read('version.properties') 
    version = config.get('global', 'version') 
    print version 

にそれを変更するだけで、このライン

class Myclass 
    version = '1.2' 

だった私のスクリプトで

をこれらの行を追加しました

このpythonファイルを実行してバージョンを印刷すると、コンソールにはっきりと表示されます。しかし、この変数がその他のプロジェクトによってアクセスされているとき、プロパティファイルから読み込まれたバージョンは読み込まれません(ハードコードされた値はうまく機能します)。

どのような違いがありますか?プロパティファイルから読み取った値が反映されないのはなぜですか?

+0

このコードは 'version.properties'ファイルを検索します。他のプロジェクトは別のディレクトリから実行されますか? –

+0

はいこのスクリプトにアクセスする他のプロジェクトは別のディレクトリにありますが、プロパティファイルはスクリプトと同じディレクトリです。これは正しいものですか? – Deepak

+0

いいえ。あなたのコードは、現在の作業ディレクトリにあります。これは、他のプロジェクトが実行されたディレクトリになります。 –

答えて

1

version.propertiesファイルは、あなたのコードと同じディレクトリにあります場合は、この使用することができます:それはカレントディレクトリにかどう

import os 

config.read(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'version.properties')) 
+0

素晴らしい!出来た。そんなにありがとう、私に多くの時間を救った。 – Deepak

+0

同じディレクトリ内のプロパティファイルにアクセスできるときに、なぜこのosパスが追加されたのか説明してください。 – Deepak

+0

このコードは、現在の作業ディレクトリではなく、コードファイル自体と同じディレクトリの 'version.properties'ファイルを探すようにPythonに指示します。それはあなたが求めていることですか? –

関連する問題