Pythonでファイルを読み書きする際に登場する「パス」。
中でも相対パスは、プログラムの可搬性を高めるうえで非常に重要な要素です。
本記事では、Python初心者でも迷わず使いこなせるよう、相対パスの基本から実践的な使い方、よくあるエラーとその対処法までをわかりやすく解説します。
本記事で学べること
- 相対パスと絶対パスの違いと、それぞれの使いどころ
- Pythonで相対パスを使う基本的な書き方
__file__
やos.path
を使った柔軟なパス指定の方法- 相対パスを使う際によくあるエラーとその対処法
- プロジェクト内でフォルダをまたいだファイル指定の実践的な例
日本では現在、ITエンジニアの人材不足が深刻化しており、
それに伴いエンジニアの需要が急速に高まっています。
プログラミングスキルを身につけることで、以下のような多くのメリットが得られます。
✅ 転職市場での競争力が向上し、収入アップのチャンスが広がる
✅ 副業として活用でき、収入源を増やせる
✅ プログラマーに限らず、IT時代を生き抜く武器になる
もし少しでも興味があるなら、まずはプログラミングスクールの無料体験を試してみるのがおすすめです。
相対パスとは?絶対パスとの違い
ファイルの場所を指定する方法には大きく2種類あります。
- 絶対パス:ドライブのルート(例:
C:/Users/name/file.txt
)からの完全なパス - 相対パス:現在のスクリプトの場所を基準としたパス(例:
../data/file.txt
)
相対パスのメリット
- 環境が変わっても動作しやすい(ポータブル性が高い)
- Gitなどで管理する際に便利
- 複数人で共有するプロジェクトで再現性が高い
Pythonで相対パスを使う基本コード
Pythonでは、相対パスを以下のように使用します。
with open("data/sample.txt", "r", encoding="utf-8") as f:
content = f.read()
この例では、スクリプトと同じフォルダ内のdata/sample.txt
というファイルを開いています。
相対パスの指定方法と記号の意味
記号 | 意味 | 例 |
---|---|---|
. | 現在のディレクトリ | ./file.txt |
.. | 1つ上のディレクトリ | ../file.txt |
/ | ディレクトリの区切り(UNIX系) | data/file.txt |
\\ | ディレクトリの区切り(Windows) | data\\file.txt (非推奨) |
補足:Pythonでは
/
を使うのが推奨されます。Windowsでも/
は使えます。
__file__を使ってスクリプトの場所を基準にする方法
複数のフォルダをまたぐ場合は、__file__
とos.path
を組み合わせて、より堅牢な相対パスを構築できます。
import os
base_dir = os.path.dirname(__file__)
file_path = os.path.join(base_dir, "data", "sample.txt")
with open(file_path, "r", encoding="utf-8") as f:
content = f.read()
ポイント
__file__
:現在実行中のスクリプトのファイルパスos.path.dirname()
:ファイルのディレクトリ部分だけを取得os.path.join()
:パスをOSに応じて適切に連結
よくあるエラーと対処法
初心者がつまずきやすいポイントをまとめました。
1. FileNotFoundError が出る
- ファイルの位置を間違えている
- 大文字・小文字が一致していない
.py
ファイルの実行場所が想定と異なる
対処法
- 絶対パスで一度動作確認してから相対パスに変更
print(os.getcwd())
でカレントディレクトリを確認os.path.abspath()
でパスの確認も有効
実践:複数フォルダをまたぐ相対パスの指定例
プロジェクト構成:
project/
│
├── src/
│ └── main.py
├── data/
│ └── sample.txt
main.pyでdata/sample.txtを開くコード:
import os
base_dir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(base_dir, "..", "data", "sample.txt")
with open(file_path, "r", encoding="utf-8") as f:
print(f.read())
🔍 ..
で1階層上に移動し、data/sample.txt
を指定しています。
まとめ|相対パスを使いこなして柔軟なスクリプトに
- 相対パスは、スクリプトを複数環境で使うときに非常に便利
__file__
とos.path
で堅牢な相対パスが書けるFileNotFoundError
はパスの確認で解決できることが多い
相対パスを使いこなすことで、Pythonスクリプトの再利用性や保守性が大きく向上します。ぜひ積極的に活用してみてください。
コメント