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ファイルを実行すると、

シェルスクリプトからの相対パスでファイルを探しに行きます。

 

このようなエラーを避けるために、カレントディレクトリを取得することが

メンテナンス性能を高めることにとって大切となります。

 

今回はちょっとむずかしい内容だったかもしれませんね。。

 

現場からは以上です!