Pythonのカレントディレクトを取得・操作する方法|実例付

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年6月)

✔このような方へ向けた記事となります

「Pythonでカレントディレクトリを知りたい」
「カレントディレクトリの取得や変更方法が分からない」
「Pythonのカレントディレクトリ操作の実例が見たい」

✔当記事を通じてお伝えすること

  • Pythonでのカレントディレクトリの基本概念
  • カレントディレクトリの取得や変更方法
  • Pythonでのカレントディレクトリ操作の実例

当記事では、Pythonでのカレントディレクトリの基本から、取得や変更方法、さらに具体的な実例を紹介するまで、詳しく解説しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Pythonでカレントディレクトリを操作するための前提知識

Pythonでカレントディレクトリを操作するための前提知識を確認していきます。

これらの知識を理解していないと、当記事全体の理解は難しいでしょう。

  • カレントディレクトリとは?
  • カレントディレクトリの重要性

カレントディレクトリとは?

カレントディレクトリ(Current Directory)とは、現在のプロセスが参照するディレクトリのことを指します。

現在の作業ディレクトリまたはカレントワーキングディレクトリとも呼ばれるものです。

ファイルやディレクトリの相対パスが指定された場合、そのパスはカレントディレクトリを基準に解釈されます。

例えば、ターミナルやコマンドプロンプトを開いたとき、そのセッションでのカレントディレクトリは通常、ユーザーのホームディレクトリ(ユーザーアカウントのディレクトリ)です。

プログラムやスクリプトを実行する場合は、その実行ファイルの場所がカレントディレクトリとなります。

カレントディレクトリの重要性

カレントディレクトリの正確な設定は、ファイル操作やプログラムの実行において重要な役割を果たします。

その理由は次のような点にあります。

  1. ファイルやディレクトリへのアクセス基準:カレントディレクトリは、ファイルやディレクトリへのアクセスの基準となります。相対パスが指定された場合、そのパスはカレントディレクトリを起点として解釈されます。カレントディレクトリを正しく設定することで、ファイルやディレクトリへのアクセスが簡便になります。
  2. ファイル操作の効率化:カレントディレクトリを適切に設定することで、ファイル操作の効率が向上します。例えば、同じディレクトリ内のファイルにアクセスする場合、カレントディレクトリをそのディレクトリに設定することで、相対パスを短くすることができます。
  3. プログラムやスクリプトの実行:カレントディレクトリは、プログラムやスクリプトの実行時の作業ディレクトリとなります。ファイルの読み書きや操作が行われる場所として、プロセスのカレントディレクトリを正しく設定することは重要です。特に、ファイルのパスを指定する場合に相対パスを使用する場合、カレントディレクトリの正確な設定が必要となります。
  4. ファイルシステムの整理とセキュリティ:カレントディレクトリは、作業ディレクトリとしての役割を果たします。作業中のファイルやディレクトリがカレントディレクトリ内に存在することで、整理やセキュリティ管理が容易になります。特に、プロジェクトごとに異なるディレクトリを使用する場合、カレントディレクトリを適切に設定することで、作業の際に誤ったファイルへのアクセスを防止できます。

適切なカレントディレクトリの選択と設定は、効率的な作業とファイルシステムの整理、プログラムの正確な実行につながります。

カレントディレクトリを確認する

こちらでは、Pythonでカレントディレクトリを確認する方法について、osモジュールとpathlibモジュールの2つの方法を使って説明します。

  • osモジュールによる取得方法
  • pathlibモジュールによる取得方法

osモジュールによる取得方法

osモジュールはPythonの標準ライブラリであり、OS依存の機能を扱うためのモジュールです。

カレントディレクトリを取得するためにはos.getcwd()関数を使用します。

この関数は、カレントディレクトリのパスを文字列として返します。

import os

current_directory = os.getcwd()
print(current_directory)  # 出力例:'/home/user/MyPythonProject'

pathlibモジュールによる取得方法

pathlibモジュールもPythonの標準ライブラリであり、オブジェクト指向のファイルシステムパス操作を提供します。

pathlib.Path.cwd()メソッドを使ってカレントディレクトリを取得できます。

このメソッドは、カレントディレクトリのパスをPathオブジェクトとして返します。

from pathlib import Path

current_directory = Path.cwd()
print(current_directory)  # 出力例:PosixPath('/home/user/MyPythonProject')

pathlibを使うと、ファイルパスの操作がより直感的におこなえます。

また、Pathオブジェクトはファイルシステムに対する高レベルの操作を提供しており、読み書きなどの処理も容易になるのです。

カレントディレクトリを変更する

Pythonでカレントディレクトリを変更する方法について、osモジュールとpathlibモジュールを用いて説明します。

  • osモジュールによる変更方法
  • pathlibモジュールによる変更方法

osモジュールによる変更方法

os.chdir()関数を使って、カレントディレクトリの変更が可能です。

引数には移動先のパスを文字列として指定します。

import os

os.chdir('/home/user/NewDirectory')
print(os.getcwd())  # 出力例:'/home/user/NewDirectory'

この例では、カレントディレクトリを/home/user/NewDirectoryに変更しています。

pathlibモジュールによる変更方法

残念ながら、pathlibモジュールにはカレントディレクトリを変更する直接的な方法は提供されていません。

そのため、カレントディレクトリを変更するにはos.chdir()を使う必要があります。

パス操作はpathlibを用いておこなえます。

from pathlib import Path
import os

new_directory = Path('/home/user/NewDirectory')
os.chdir(new_directory)
print(Path.cwd())  # 出力例:PosixPath('/home/user/NewDirectory')

このコードでは、新しいディレクトリのパスをPathオブジェクトとして生成し、そのオブジェクトをos.chdir()の引数に指定してカレントディレクトリを変更しています。

カレントディレクトリの活用

これから、Python開発におけるカレントディレクトリの具体的な使用例を見ていきましょう。

それぞれの環境やライブラリごとに、カレントディレクトリがどのように活用されるかを説明します。

  • Python開発環境でのカレントディレクトリ
  • Pythonの基礎操作とカレントディレクトリ
  • GUIプログラミング(Tkinter)とカレントディレクトリ
  • Pythonライブラリ活用とカレントディレクトリ
  • Web開発(Django)とカレントディレクトリ

Python開発環境でのカレントディレクトリ

カレントディレクトリは、開発環境によって自動的に設定される場合があります。

例えば、VS Code、PyCharmなどの統合開発環境では、現在開いているプロジェクトのルートディレクトリがカレントディレクトリとして設定されます。

しかし、それぞれの環境で適切に設定がなされているかは確認しておくべきです。

#Pythonコードによる確認方法
import os

current_dir = os.getcwd()
print(current_dir)

Pythonの基礎操作とカレントディレクトリ

ファイル操作やディレクトリ操作はPythonの基本的な操作のひとつです。

カレントディレクトリは、これらの操作を行う際の起点となります。

例えば、ファイルを開く際に絶対パスを指定する代わりに、カレントディレクトリからの相対パスを指定できます。

ファイルツリー

- project/
  - src/
    - main.py
    - utils/
      - helper.py
  - data/
    - input.txt

main.pyからinput.txtの相対パス

data/input.txt

GUIプログラミング(Tkinter)とカレントディレクトリ

GUIプログラミングでは、画像や音声などの外部リソースを読み込む際にカレントディレクトリが活用されます。

例えば、Tkinterでウィンドウに画像を表示する際、画像ファイルは通常カレントディレクトリまたはそのサブディレクトリから読み込まれます。

Pythonライブラリ活用とカレントディレクトリ

多くのPythonライブラリは、カレントディレクトリに依存して動作します。

例えば、pandasのread_csv関数は、カレントディレクトリを基準にCSVファイルを読み込みます。

import pandas as pd

# カレントディレクトリにある"sample.csv"ファイルを読み込む
df = pd.read_csv("sample.csv")

# 読み込んだデータの表示
print(df.head())

また、TensorFlowやPyTorchを用いたディープラーニングのプロジェクトでは、訓練済みモデルやデータセットをカレントディレクトリから読み込むことが一般的です。

Web開発(Django)とカレントディレクトリ

Web開発フレームワークのDjangoも、カレントディレクトリを基準にプロジェクトを構築します。

プロジェクトを作成すると、カレントディレクトリに新しいディレクトリが作られ、その中にプロジェクトの構成要素が作られるのです。

さらに、Djangoでは静的ファイル(CSSやJavaScriptなど)やテンプレートファイルは特定のディレクトリから読み込まれるため、カレントディレクトリの理解が必要です。

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        ...
    },
]

Djangoで一からアプリ開発できるチュートリアルはこちら。

https://itc.tokyo/django/tutorial/

まとめ

カレントディレクトリはPythonの開発において重要な概念であり、適切に操作することでプログラムの柔軟性と効率性が向上します。

Pythonに標準で構造体の概念がないとはいえ、その概念を理解しておくことは非常に重要です。

構造体の代替手法としてのクラス、namedtuple、dataclassを活用することで、より整理されたコードを書くことが可能になります。

プログラミングスキルの向上のためには、常に新しい知識を学び、既存の知識を深化することが重要です。

ぜひさまざまな記事を読み、理解を深めてください。

タイトルとURLをコピーしました