Cześć, przede wszystkim powinieneś zrozumieć funkcje os.path.abspath (ścieżka) i os.path.relpath (ścieżka)
W skrócie os.path.abspath (ścieżka) tworzy ścieżkę względną do ścieżki bezwzględnej . A jeśli podana ścieżka jest sama ścieżką bezwzględną, wówczas funkcja zwraca tę samą ścieżkę.
podobnie os.path.relpath (ścieżka) tworzy ścieżkę bezwzględną do ścieżki względnej . A jeśli podana ścieżka sama jest ścieżką względną, wówczas funkcja zwraca tę samą ścieżkę.
Poniższy przykład pozwala poprawnie zrozumieć powyższą koncepcję :
Załóżmy, że mam plik lista_plików_wejściowych.txt, który zawiera listę plików wejściowych do przetworzenia przez mój skrypt python.
D: \ conc \ input1.dic
D: \ conc \ input2.dic
D: \ Copyioconc \ lista_plików_wejściowych.txt
Jeśli widzisz powyższą strukturę folderów, lista_plików_plików.txt znajduje się w folderze Copyofconc, a pliki do przetworzenia przez skrypt python znajdują się w folderze conc
Ale zawartość pliku input_file_list.txt jest taka, jak pokazano poniżej:
.. \ conc \ input1.dic
.. \ conc \ input2.dic
A mój skrypt Pythona jest obecny w D: drive.
A ścieżka względna podana w pliku plik_wejściowy.txt jest względna do ścieżki pliku plik_wejściowy.txt .
Więc kiedy skrypt Pythona powinien wykonać bieżący katalog roboczy (użyj os.getcwd () aby uzyskać ścieżkę)
Ponieważ moja ścieżka względna jest względna do listy_pliku_wejściowego.txt , czyli „D: \ Copyofconc” , muszę zmienić bieżący katalog roboczy na „D: \ Copyofconc” .
Więc muszę użyć os.chdir („D: \ Copyofconc”) , więc bieżącym katalogiem roboczym będzie „D: \ Copyofconc” .
Teraz, aby pobrać pliki input1.dic i input2.dic , przeczytam wiersze „.. \ conc \ input1.dic”, a następnie użyję polecenia
input1_path = os.path.abspath ('.. \ conc \ input1.dic') (aby zmienić ścieżkę względną na ścieżkę bezwzględną. Tutaj jako bieżący katalog roboczy jest „D: \ Copyofconc”, plik „. \ conc \ input1. dic ”należy uzyskać w odniesieniu do„ D: \ Copyofconc ”)
więc input1_path będzie mieć postać „D: \ conc \ input1.dic”