Pythonで実行ファイルからデータの相対パスを取得する
Pythonを触っていて,相対パスと絶対パスの取得まわりで手間取ったので,メモしておきます.
環境
MacOS
Python3.6.0
相対パスの取得のしかた
手順としては,
0. osをインポートする 1.スクリプトが置いてあるディレクトリの絶対パスを取得する 2.「1で取得した絶対パス」と「スクリプトとデータの相対パス」をくっつける 3.正規化する
の順に行います.
ただし,1で取得されるのは,スクリプトそのものの絶対パスではなく,スクリプトがあるディレクトリの絶対パスであることに注意が必要です.
コード
import os #スクリプトのあるディレクトリの絶対パスを取得 name = os.path.dirname(os.path.abspath(__name__)) #絶対パスと相対パスをくっつける joined_path = os.path.join(name, '../dataset/data') #正規化して絶対パスにする data_path = os.path.normpath(joined_path)