Creative Plus

遊んで・学んで・試してみてクリエイティブをプラスする「デジタルアート系ブログメディア」

cp_blog_respo_01

Python

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

投稿日:



ナカジ(@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__)))



cp_blog_001

cp_blog_001

サイト運営者

運営者:ナカジ
PureDataやFoxDotで音楽やってます。
インタラクティブ映像の仕事してました。
メディアアート、テクノロジーアートが主軸です。
日本のメディアアーティスト大国化に貢献したい。

運営者プロフィール&当サイトの詳細

記事を検索



プログラミングで生み出す「創造表現」

cp_blog_respo_04

-Python
-

Copyright© Creative Plus , 2018 All Rights Reserved.