Ciao prima di tutto dovresti capire le funzioni os.path.abspath (path) e os.path.relpath (path)
In breve os.path.abspath (path) crea un percorso relativo al percorso assoluto . E se il percorso fornito è esso stesso un percorso assoluto, la funzione restituisce lo stesso percorso.
allo stesso modo os.path.relpath (percorso) crea un percorso assoluto al percorso relativo . E se il percorso fornito è esso stesso un percorso relativo, la funzione restituisce lo stesso percorso.
L'esempio seguente può farti comprendere correttamente il concetto sopra :
supponiamo di avere un file input_file_list.txt che contiene un elenco di file di input che devono essere elaborati dal mio script Python.
D: \ conc \ input1.dic
D: \ conc \ input2.dic
D: \ Copyioconc \ input_file_list.txt
Se vedi la struttura delle cartelle sopra, input_file_list.txt è presente nella cartella Copyofconc e i file che devono essere elaborati dallo script python sono presenti nella cartella conc
Ma il contenuto del file input_file_list.txt è come mostrato di seguito:
.. \ conc \ input1.dic
.. \ conc \ input2.dic
E il mio script Python è presente in D: drive.
E il percorso relativo fornito nel file input_file_list.txt è relativo al percorso del file input_file_list.txt .
Quindi, quando lo script python deve eseguire la directory di lavoro corrente (utilizzare os.getcwd () per ottenere il percorso)
Poiché il mio percorso relativo è relativo a input_file_list.txt , ovvero "D: \ Copyofconc" , devo modificare la directory di lavoro corrente in "D: \ Copyofconc" .
Quindi devo usare os.chdir ('D: \ Copyofconc') , quindi l'attuale directory di lavoro deve essere "D: \ Copyofconc" .
Ora per ottenere i file input1.dic e input2.dic , leggerò le righe ".. \ conc \ input1.dic" quindi userò il comando
input1_path = os.path.abspath ('.. \ conc \ input1.dic') (per cambiare il percorso relativo in percorso assoluto. Qui come directory di lavoro corrente è "D: \ Copyofconc", il file ". \ conc \ input1. dic "si accede relativamente a" D: \ Copyofconc ")
pertanto input1_path deve essere "D: \ conc \ input1.dic"