Привіт, перш за все, ви повинні зрозуміти функції os.path.abspath (шлях) та os.path.relpath (шлях)
Якщо коротко, os.path.abspath (шлях) робить відносний шлях до абсолютного шляху . І якщо наданий шлях сам по собі є абсолютним шляхом, то функція повертає той самий шлях.
аналогічно os.path.relpath (шлях) робить абсолютний шлях до відносного шляху . І якщо наданий шлях сам по собі відносний шлях, то функція повертає той самий шлях.
Нижче на прикладі можна зрозуміти вищезазначене поняття :
припустимо, у мене є файл input_file_list.txt, який містить список вхідних файлів, які обробляються моїм сценарієм python.
D: \ conc \ input1.dic
D: \ conc \ input2.dic
D: \ Copyioconc \ input_file_list.txt
Якщо ви бачите вище структуру папок, input_file_list.txt присутній у папці Copyofconc, а файли, які обробляються сценарієм python, містяться у папці conc
Але вміст файлу input_file_list.txt є таким, як показано нижче:
.. \ conc \ input1.dic
.. \ conc \ input2.dic
І мій скрипт python присутній у D: drive.
І відносний шлях, наданий у файлі input_file_list.txt , відносний до шляху файлу input_file_list.txt .
Отже, коли сценарій python виконує поточну робочу директорію (використовуйте os.getcwd (), щоб отримати шлях)
Оскільки мій відносний шлях відносний до input_file_list.txt , тобто "D: \ Copyofconc" , я повинен змінити поточний робочий каталог на "D: \ Copyofconc" .
Тому я повинен використовувати os.chdir ('D: \ Copyofconc') , тож поточний робочий каталог повинен бути "D: \ Copyofconc" .
Тепер, щоб отримати файли input1.dic та input2.dic , я прочитаю рядки ".. \ conc \ input1.dic", тоді буду використовувати команду
input1_path = os.path.abspath ('.. \ conc \ input1.dic') (для зміни відносного шляху до абсолютного шляху. Тут як поточний робочий каталог є "D: \ Copyofconc", файл ". \ conc \ input1. dic "має бути доступний відносно" D: \ Copyofconc ")
тож input1_path має бути "D: \ conc \ input1.dic"