Python3にてカレントディレクトリの取得方法
■ カレントディレクトリとは
今自分がいるファイル階層のことです。
Linuxだと
$ pwd
で取得できるあれです。(伝わるかな?)
今回の使い方ですと、
Pythonファイルが置かれている位置を取得する
というような意味合いとなります。
■ コマンド
____________________
from pathlib import Path
CURRENT_DIR = Path(__file__).resolve().parent
____________________
ちょっとよくわからないと思いますが、
ファイルパス関連の操作をできるモジュールをインポートし、
現在位置を取得する関数を使っています。
(深く理解する必要はないと思います)
■ 実際に動かしてみましょう
本ファイルの配置は以下とします
/Users/Me/プログラミング/パイソン関連/get_current.py
____________________
【get_current.py】
# モジュールのインポート
from pathlib import Path
# カレントディレクトリの取得
CURRENT_DIR = Path(__file__).resolve().parent
print(CURRENT_DIR)
# 【出力結果】 /Users/Me/プログラミング/パイソン関連
____________________
■カレントディレクトリより上層のファイルにアクセスしたい
本ファイルの配置は以下とします
/Users/Me/プログラミング/パイソン関連/get_current.py
アクセスしたいファイルは以下とします
/Users/Me/メモ/memo.txt
____________________
【get_current.py】
# モジュールのインポート
from pathlib import Path
# カレントディレクトリの取得
CURRENT_DIR = Path(__file__).resolve().parent
# 対象のファイルの位置を指定
TARGET_DIR = str(CURRENT_DIR) + "/../../メモ/memo.txt"
print(TARGET_DIR)
# 【出力結果】 /Users/Me/プログラミング/パイソン関連/../../メモ/memo.txt
____________________
カレントディレクトリ + "/../"
とすると、ディレクトリ階層を1つ上に上がることが出来ます。
■ こんなのどこで使うの???
Pythonファイルから別のファイルにアクセスしたい時、
基本的に相対パスでファイルを指定すると思うのですが
Pythonファイルで相対パスを指定すると
実行位置からの相対パスとなってしまいます。
つまり、別のファイル階層に置いているシェルスクリプトで
Pythonファイルを実行すると、
シェルスクリプトからの相対パスでファイルを探しに行きます。
このようなエラーを避けるために、カレントディレクトリを取得することが
メンテナンス性能を高めることにとって大切となります。
今回はちょっとむずかしい内容だったかもしれませんね。。
現場からは以上です!