スポンサーリンク

【Python】パスの書き方いろいろ!

記事内に広告が含まれています。

Pythonでファイルやフォルダを操作する際、ファイルパスを指定することが頻繁にあります。

しかし、プラットフォーム(WindowsやMac、Linux)による違いや、エスケープシーケンスなどで混乱することも多いです。

Pythonにおけるパスの書き方をまとめてみます。


スポンサーリンク

パスの基礎

絶対パスと相対パス

  • 絶対パス
    ファイルシステムのルート(WindowsではC:\など、Mac/Linuxでは/)から始まる完全なパス。pythonコードをコピーする# Windows例 "C:\\Users\\YourName\\Documents\\file.txt" # Mac/Linux例 "/home/YourName/Documents/file.txt"
  • 相対パス
    現在の作業ディレクトリからの相対位置を示します。pythonコードをコピーする# 現在のディレクトリの "subfolder/file.txt" "subfolder/file.txt" # 親ディレクトリのファイル "../file.txt"

OSによる違い

  • Windowsではバックスラッシュ(\)を使います。
  • Mac/Linuxではスラッシュ(/)を使います。

Pythonではこれらの違いを吸収するために、標準ライブラリが提供する便利なツールを使うのがおすすめです。


スポンサーリンク

パスの記述方法

バックスラッシュの問題と解決法

Windowsでバックスラッシュをそのまま使うと、エスケープシーケンスとして解釈されることがあります。

path = "C:\Users\YourName\Documents\file.txt"  # エラーの可能性

解決策1: エスケープシーケンスを使う

バックスラッシュを2つ書きます。

path = "C:\\Users\\YourName\\Documents\\file.txt"

解決策2: 生文字列(Raw String)を使う

文字列の前にrを付けると、エスケープシーケンスが無効化されます。

path = r"C:\Users\YourName\Documents\file.txt"

標準ライブラリの活用

os.pathモジュール

os.path は、OSに依存しないパス操作を提供します。

import os

# パスの結合
path = os.path.join("folder", "subfolder", "file.txt")
print(path)  # Windowsでは "folder\subfolder\file.txt

pathlibモジュール

Python 3.4以降では、pathlib が推奨されています。

Pathオブジェクトを使うことで、より直感的なパス操作が可能です。

from pathlib import Path

# パスの結合
path = Path("folder") / "subfolder" / "file.txt"
print(path)  # Windowsでは "folder\subfolder\file.txt"

# 絶対パスを取得
absolute_path = path.resolve()
print(absolute_path)

実用例

ファイルの存在確認

from pathlib import Path

file_path = Path("folder/subfolder/file.txt")

if file_path.exists():
    print("ファイルが存在します")
else:
    print("ファイルが存在しません")

ディレクトリの作成

from pathlib import Path

dir_path = Path("new_folder")
dir_path.mkdir(parents=True, exist_ok=True)  # フォルダが存在しない場合に作成
print("ディレクトリを作成しました")

ファイルの読み書き

from pathlib import Path

# ファイルに書き込み
file_path = Path("example.txt")
file_path.write_text("こんにちは、Python!")

# ファイルを読み込み
content = file_path.read_text()
print(content)

プラットフォームを意識したコードの書き方

ospathlib を使うことで、OSに依存しないコードを書けます。

また、プラットフォームごとのパスセパレータを取得する場合は次の方法を利用します。

パスセパレータの確認

import os

print(os.sep)  # Windows: "\", Mac/Linux: "/"

おすすめ

  1. pathlibを使う
    簡潔な記述が可能になります。
  2. エスケープシーケンスの回避
    生文字列(r"")または標準ライブラリを活用します。
  3. OS依存を排除
    os.pathpathlibを使うことでコードの移植性を高めます。

まとめ

Pythonでファイルパスを扱う際は、プラットフォームやエスケープシーケンスに注意しつつ、標準ライブラリを活用することで安全かつ簡単に操作できます。

スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました