Python の相対パス
このチュートリアルでは、Python の相対パスについて説明します。
Python のファイルパス
ファイルパスは、コンピューター内のファイルの場所を指定します。たとえば、C:\PythonProjects\Tutorials\Paths
は、Windows マシン内のファイル paths.py
のパスです。ここで、C:\
はルートディレクトリであり、PythonProjects
、Tutorials
、および 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
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