Percorso relativo in Python
In questo tutorial, discuteremo il percorso relativo in Python.
Percorso del file in Python
Un percorso file specifica la posizione di un file nel computer. Ad esempio, C:\PythonProjects\Tutorials\Paths
è il percorso di un file paths.py
nella mia macchina Windows. Qui, C:\
è la directory principale, e PythonProjects
, Tutorials
e Paths
sono sottodirectory. paths.py
è uno script python all’interno della directory Paths
all’interno della directory Tutorials
all’interno della directory PythonProjects
all’interno della directory root C:\
. Esistono due tipi di percorsi di file in Python, ovvero percorsi assoluti e relativi.
Differenza tra Windows, Mac e Linux
Nelle macchine Windows, \
è usato come separatore tra i nomi delle directory mentre, sia nelle macchine Linux che in quelle Mac, /
è usato come separatore. Per esempio,
#file path in Windows
rootdirectory\\subdirectory\\subsubdirectory\\filename.extension
#file path in Mac and Linux
rootdirectory/subdirectory/subsubdirectory/filename.extension
In Windows, ci sono due barre rovesciate perché ogni barra rovesciata deve essere sottoposta a escape utilizzando un’altra barra rovesciata. Questo può essere gestito usando il metodo os.path.join()
. Questo metodo gestisce i separatori in base al sistema operativo. Per esempio,
import os
pathname = os.path.join("root", "directory1", "directory2")
print(pathname)
Produzione:
#On Windows
root\directory1\directory2
#On Mac and Linux
root/directory1/directory2
Questo tutorial conterrebbe \
come separatore per fornire gli esempi in Windows. Useremo la seguente gerarchia di file e imposteremo C:\PythonProjects\Tutorials\Paths
come directory di lavoro corrente.
Directory di lavoro corrente
La directory di lavoro corrente o cwd
in breve è la directory da cui viene eseguito il programma. È possibile ottenere la directory di lavoro corrente di un particolare file con il metodo os.getcwd()
.
import os
print(os.getcwd())
Produzione:
C:\PythonProjects\Tutorials\Paths
La directory di lavoro corrente può anche essere modificata in fase di esecuzione utilizzando il metodo os.chdir()
.
import os
print("Old cwd = " + os.getcwd())
os.chdir("C:\\PythonProjects\\Tutorials")
print("New cwd = " + os.getcwd())
Produzione:
Old cwd = C:\PythonProjects\Tutorials\Paths
New cwd = C:\PythonProjects\Tutorials
Percorso assoluto
Un percorso assoluto di un file è il percorso completo dalla directory principale a quel particolare file. Ad esempio, C:\PythonProjects\Tutorials\Paths\paths.py
è il percorso assoluto del file paths.py
.
Possiamo ottenere il percorso assoluto del file corrente come mostrato di seguito.
import os
absolutepath = os.path.abspath(__file__)
print(absolutepath)
Produzione:
C:\PythonProjects\Tutorials\Paths\paths.py
Vai alla directory Strings
utilizzando Absolute Path in Python
Navigare in una cartella utilizzando il percorso assoluto in Python è piuttosto semplice. L’unico problema è che devi conoscere i nomi esatti di tutte le directory dalla directory principale.
import os
print("Old cwd = " + os.getcwd())
os.chdir("C:\\PythonProjects\\Tutorials\\Strings")
print("New cwd = " + os.getcwd())
Percorso relativo
Il percorso assoluto è utile, ma può diventare complesso molto presto. Quindi, per ridurre al minimo questa complessità, viene utilizzato un percorso relativo. Percorso relativo indica il percorso di un determinato file relativo alla directory di lavoro corrente.
Ad esempio, se la directory di lavoro corrente è C:\PythonProjects\Tutorials
, il percorso relativo del file path.py
sarebbe \Paths\paths.py
che è più breve e più facile da usare del percorso assoluto C:\PythonProjects\Tutorials\Paths\paths.py
.
Il percorso assoluto di un file rimane lo stesso ovunque, ma il percorso relativo cambia a seconda della directory di lavoro corrente. Questo fenomeno è dimostrato nel seguente esempio di codifica.
Vai alla directory Strings
utilizzando il percorso relativo in Python
Se abbiamo bisogno di accedere ai file nella cartella Strings
, dobbiamo utilizzare il percorso assoluto completo C:\PythonProjects\Tutorials\Strings\string.py
oppure possiamo fare come indicato nel codice seguente.
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)
Produzione:
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