【Python】相対パスの使い方を徹底解説|初心者でも迷わないファイル指定方法

Python

Pythonでファイルを読み書きする際に登場する「パス」。
中でも相対パスは、プログラムの可搬性を高めるうえで非常に重要な要素です。

本記事では、Python初心者でも迷わず使いこなせるよう、相対パスの基本から実践的な使い方、よくあるエラーとその対処法までをわかりやすく解説します。

本記事で学べること
  • 相対パスと絶対パスの違いと、それぞれの使いどころ
  • Pythonで相対パスを使う基本的な書き方
  • __file__os.pathを使った柔軟なパス指定の方法
  • 相対パスを使う際によくあるエラーとその対処法
  • プロジェクト内でフォルダをまたいだファイル指定の実践的な例
日本では現在、ITエンジニアの人材不足が深刻化しており、
それに伴いエンジニアの需要が急速に高まっています。
プログラミングスキルを身につけることで、以下のような多くのメリットが得られます。
転職市場での競争力が向上し、収入アップのチャンスが広がる
副業として活用でき、収入源を増やせる
✅ プログラマーに限らず、IT時代を生き抜く武器になる

もし少しでも興味があるなら、まずはプログラミングスクールの無料体験を試してみるのがおすすめです。
スクール名特徴主な学習内容対象者
AI・データサイエンス特Python/AIに特化した実践カリキュラム。現役エンジニアの手厚いサポートと「学び放題」制度が特徴。専門実践教育訓練給付金適用可能。Python, 機械学習, データ分析AI・データ分析初心者~中級者
完全マンツーマン指導。オーダーメイドカリキュラムとトリプルサポート体制(講師+コーチ+Q&A掲示板)。挫折率2.1%の継続性。Web開発, AI, アプリ開発
キャリアチェンジ志望者
AI/機械学習専門。E資格合格率83.1%。カリキュラムが無期限に閲覧可能。卒業生コミュニティが強み。AI特化の転職サポートあり。Python, 機械学習, データ分析AIエンジニア志望者
転職保証付きの短期集中型スクール。未経験者向けのサポートが充実。Web開発, プログラミング全般未経験からのエンジニア転職志望者

相対パスとは?絶対パスとの違い

ファイルの場所を指定する方法には大きく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スクリプトの再利用性や保守性が大きく向上します。ぜひ積極的に活用してみてください。

コメント

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