Привет, прежде всего вы должны понимать функции os.path.abspath (путь) и os.path.relpath (путь)
Короче говоря os.path.abspath (путь) делает относительный путь к абсолютному пути . И если указанный путь сам по себе является абсолютным, функция возвращает тот же путь.
аналогично os.path.relpath (путь) делает абсолютный путь к относительному пути . И если указанный путь является относительным, то функция возвращает тот же путь.
Приведенный ниже пример может помочь вам правильно понять вышеуказанную концепцию :
Предположим, у меня есть файл input_file_list.txt, который содержит список входных файлов для обработки моим скриптом Python.
D: \ конц \ input1.dic
D: \ конц \ input2.dic
D: \ Copyioconc \ input_file_list.txt
Если вы видите вышеупомянутую структуру папок, input_file_list.txt присутствует в папке Copyofconc, а файлы, обрабатываемые сценарием python, присутствуют в папке conc.
Но содержимое файла input_file_list.txt показано ниже:
.. \ конц \ input1.dic
.. \ конц \ input2.dic
А мой скрипт на python присутствует на диске D : .
И относительный путь, указанный в файле 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"