1. ホーム
  2. python

[解決済み】コードリポジトリで作業する際にリソースの相対パスを参照する方法

2022-04-20 22:56:39

質問

私たちは、WindowsとLinuxの両方にデプロイされるコードリポジトリで作業しており、時には異なるディレクトリに配置されることもあります。 プロジェクト内のモジュールの1つは、プロジェクト内の非Pythonリソース(CSVファイルなど)の1つをどのように参照する必要がありますか?

というようなことをすると

thefile = open('test.csv')

または

thefile = open('../somedirectory/test.csv')

特定の1つのディレクトリ、またはディレクトリのサブセットからスクリプトを実行したときのみ動作します。

やりたいことは、以下のようなことです。

path = getBasePathOfProject() + '/somedirectory/test.csv'
thefile = open(path)

可能なのでしょうか?

どのように解決するのですか?

現在のファイルパスから相対的なファイル名を使用しようとする。'./my_file' の例です。

fn = os.path.join(os.path.dirname(__file__), 'my_file')

Python 3.4+の場合、以下のように使うこともできます。 パスリブ :

fn = pathlib.Path(__file__).parent / 'my_file'