Python の相対パス

Muhammad Maisam Abbas 2023年10月10日
  1. Python のファイルパス
  2. 絶対パス
  3. 相対パス
Python の相対パス

このチュートリアルでは、Python の相対パスについて説明します。

Python のファイルパス

ファイルパスは、コンピューター内のファイルの場所を指定します。たとえば、C:\PythonProjects\Tutorials\Paths は、Windows マシン内のファイル paths.py のパスです。ここで、C:\はルートディレクトリであり、PythonProjectsTutorials、および Paths はサブディレクトリです。paths.py は、ルートディレクトリ C:\内の PythonProjects ディレクトリ内の Tutorials ディレクトリ内の Paths ディレクトリ内の Python スクリプトです。Python には、絶対パスと相対パスの 2 種類のファイルパスがあります。

Windows、Mac、Linux の違い

Windows マシンでは、\がディレクトリ名間の区切り文字として使用されますが、Linux マシンと Mac マシンの両方で、/が区切り文字として使用されます。例えば、

#file path in Windows
rootdirectory\\subdirectory\\subsubdirectory\\filename.extension
#file path in Mac and Linux
rootdirectory/subdirectory/subsubdirectory/filename.extension

Windows では、各バックスラッシュを別のバックスラッシュを使用してエスケープする必要があるため、2つのバックスラッシュがあります。これは、os.path.join() メソッドを使用して管理できます。このメソッドは、オペレーティングシステムに従ってセパレータを処理します。例えば、

import os

pathname = os.path.join("root", "directory1", "directory2")
print(pathname)

出力:

#On Windows
root\directory1\directory2
#On Mac and Linux
root/directory1/directory2

このチュートリアルには、Windows での例を示すための区切り文字として\が含まれています。次のファイル階層を使用し、C:\PythonProjects\Tutorials\Paths を現在の作業ディレクトリに設定します。

ファイルシステムの例

現在の作業ディレクトリ

現在の作業ディレクトリまたは略して cwd は、プログラムが実行されているディレクトリです。os.getcwd() メソッドを使用して、特定のファイルの現在の作業ディレクトリを取得できます。

import os

print(os.getcwd())

出力:

C:\PythonProjects\Tutorials\Paths

現在の作業ディレクトリは、os.chdir() メソッドを使用して実行時に変更することもできます。

import os

print("Old cwd = " + os.getcwd())
os.chdir("C:\\PythonProjects\\Tutorials")
print("New cwd = " + os.getcwd())

出力:

Old cwd = C:\PythonProjects\Tutorials\Paths
New cwd = C:\PythonProjects\Tutorials

絶対パス

ファイルの絶対パスは、ルートディレクトリからその特定のファイルへの完全なパスです。たとえば、C:\PythonProjects\Tutorials\Paths\paths.py は、paths.py ファイルの絶対パスです。

以下に示すように、現在のファイルの絶対パスを取得できます。

import os

absolutepath = os.path.abspath(__file__)
print(absolutepath)

出力:

C:\PythonProjects\Tutorials\Paths\paths.py

Python で絶対パスを使用して Strings ディレクトリに移動する

Python の絶対パスを使用してフォルダーに移動するのは非常に簡単です。唯一の頭痛の種は、ルートディレクトリからすべてのディレクトリの正確な名前を知らなければならないことです。

import os

print("Old cwd = " + os.getcwd())
os.chdir("C:\\PythonProjects\\Tutorials\\Strings")
print("New cwd = " + os.getcwd())

相対パス

絶対パスは役に立ちますが、すぐに複雑になる可能性があります。したがって、この複雑さを最小限に抑えるために、相対パスが使用されます。相対パスとは、現在の作業ディレクトリを基準にした特定のファイルのパスを意味します。

たとえば、現在の作業ディレクトリが C:\PythonProjects\Tutorials の場合、path.py ファイルの相対パスは \Paths\paths.py になり、絶対パス C:\PythonProjects\Tutorials\Paths\paths.py よりも短くて使いやすくなります。

ファイルの絶対パスはどこでも同じですが、相対パスは現在の作業ディレクトリに応じて変わります。この現象は、次のコーディング例で示されています。

Python で相対パスを使用して Strings ディレクトリに移動する

Strings フォルダー内のファイルにアクセスする必要がある場合は、完全な絶対パス C:\PythonProjects\Tutorials\Strings\string.py を使用するか、次のコードで説明されているように実行できます。

import os
import sys

absolutepath = os.path.abspath(__file__)
print(absolutepath)

fileDirectory = os.path.dirname(absolutepath)
print(fileDirectory)
# Path of parent directory
parentDirectory = os.path.dirname(fileDirectory)
print(parentDirectory)
# Navigate to Strings directory
newPath = os.path.join(parentDirectory, "Strings")
print(newPath)

出力:

C:\PythonProjects\Tutorials\Paths\paths.py
C:\PythonProjects\Tutorials\Paths
C:\PythonProjects\Tutorials
C:\PythonProjects\Tutorials\Strings
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Python Path