Привет, прежде всего, вы должны понимать функции 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: 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"