【Python Tips】スクリプトを制作作業フォルダーに置いたまま実行する為に「実行ディレクトリを絶対パスで取得」し「移動」する方法

投稿日:2018-03-24



ナカジ(@cp_nakajun)です。

今もまだ学習初期段階ですが
Pythonでスクリプトを書き、「実行」となった時のことです。

とりあえずテキストエディターでスクリプトを書きます。
そのファイルは(僕の場合デスクトップなどの)任意のフォルダー内に保存しながら作業してます。と…

で、通常であれば「実行」する為にターミナル等を起動し

python /dir-name/dir-name/dir-name/file-name.py

とすればよいのですが

(僕の場合は)エクセルからデータを取得しPythonで操作しようとしたところ

そのエクセルファイルをPythonの実行ディレクトリに置いておかないとエラーになるという状況に出会いました。

スクリプトとデータのファイルは同一フォルダに置いて管理したい。

他にも良い方法があるのかもしれませんが、それは不便なのでスクリプト毎に実行フォルダーを移動して対応することにしました。

実行ディレクトリを絶対パスで取得し移動する

Pythonの標準ライブラリ「os」の「path」関数を利用します。

詳細はPythonの公式ドキュメント
https://docs.python.jp/3/library/os.path.html

先ず最初に「os」ライブラリを利用する為にインポートします。

import os

Python カレントディレクトリの確認

今いるカレントディレクトリ(実行ディレクトリ)を確認します。

os.getcwd()

先のケースで言うと、ここで出てきたディレクトリにファイルを置いておかないといけない訳です。

Python 絶対パスを取得

[__file__]を用いると「スクリプトへの相対パス」を取得できます。

os.path.abspath()を使って絶対パスを取得します。

[os.path.abspath()]:パス名 path の正規化された絶対パスを返します。

os.path.abspath(__file__)

次に
os.path.dirname()の引数をスクリプトへの絶対パスにすることで「スクリプトのあるディレクトリの絶対パス」を取得することができます。

[os.path.dirname()]:パス名 path のディレクトリ名を返します。

os.path.dirname(os.path.abspath(__file__))

Python スクリプトファイルのあるディレクトリに移動

os.chdir()で移動します。

[os.chdir()]:現在の作業ディレクトリを設定します。

os.chdir(os.path.dirname(os.path.abspath(__file__)))

まとめ

スクリプトに以下のように記述しておくことで
スクリプトが置いてあるフォルダーを実行ディレクトリとすることができます。

import os

os.chdir(os.path.dirname(os.path.abspath(__file__)))

サポート募集中

この記事はお役に立てましたか。
よかったら、コーヒー ☕ をご馳走いただけたら励みになります。



Python学習にオススメ




独学で身につけるPython〜基礎編〜【業務効率化・自動化で残業を無くそう!】icon

【完全初心者向け】絶対に挫折させないPython入門講座icon

みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2022年最新版】icon






シゴトがはかどる Python自動処理の教科書

PythonでExcel、メール、Webを自動化する本


おすすめのクリエイティブ・コーディング関連カテゴリー

ウェブツール

機能はシンプルなものですが、p5.jsやTone.jsで描画したり音が出たりするので遊んでみてください。
・【Midi Number Tools】:MIDIナンバーから音名と周波数を判定します
・【Delay Time Calculator】:テンポに応じた音符の長さを判定します