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 に答える