1. ホーム
  2. python

[解決済み] パッケージサブディレクトリのデータにアクセスする [重複]。

2022-05-11 06:23:13

質問

<余談
この質問には、すでにここで回答があります :
クローズド 1年前 .

私は、データファイルを開く必要があるモジュールを含む Python パッケージを書いています。 ./data/ サブディレクトリを作成します。今現在、私はクラスと関数にファイルへのパスをハードコードしています。ユーザーのシステムのどこにインストールされているかに関係なく、サブディレクトリにアクセスできる、より堅牢なコードを書きたいと思います。

いろいろな方法を試してみたが、今のところうまくいっていない。ほとんどの "current directory" コマンドは、モジュールのディレクトリではなく、システムの python インタープリタのディレクトリを返しているようです。

これは些細なことで、よくある問題のように思えます。しかし、私はそれを理解することができないようです。問題のひとつは、私のデータファイルが .py ファイルなので、インポート関数などが使えない。

何か提案はありますか?

今、私のパッケージディレクトリは次のようになっています。

/
__init__.py
module1.py
module2.py
data/   
   data.txt

にアクセスしようとしています。 data.txt から module*.py !

解決方法は?

を使用することができます。 __file__ のように、パッケージのパスを取得することができます。

import os
this_dir, this_filename = os.path.split(__file__)
DATA_PATH = os.path.join(this_dir, "data", "data.txt")
print open(DATA_PATH).read()