Python OS.PATH: почему abspath меняет значение? - PullRequest
0 голосов
/ 29 марта 2020

Я использую очень полезную библиотеку ОС для автоматизации ИТ.

Скопируйте код, чтобы создать папку / переместить в папку / создать файл

import os

# create a directory
os.mkdir("directory")

# get the path of the directory
path = os.path.abspath("directory")
print(f"path after creating the directory: {path}")

# change current directory
os.chdir("directory")
path = os.path.abspath("directory")
print(f"path after changing current directory: {path}")

# create a file
with open("hello.py", "w"):
    pass

Выход:

путь после создания каталога: P: \ Code \ Python \ directory

путь после изменения текущего каталога: P: \ Code \ Python \ directory \ directory

Я не понимаю что-то:

Почему путь к файлу каталога меняется?

У меня нет каталога в \ directory

Спасибо за ваши ответы

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Если вы прочитаете документацию по функции [abspath][1], вы поймете, почему прибывает дополнительный directory.

Возвращает нормализованную абсолютизированную версию пути пути. На большинстве платформ это эквивалентно вызову функции normpath () следующим образом: normpath (join (os.getcwd (), path)).

По сути, os.path.abspath('directory') дает вам « Абсолютный путь к чему-то с именем 'directory' внутри текущего каталога (который также называется 'directory') был бы "

Абсолютный путь, который вы видите для чего-то в каталоге, который вы только что создали, что-то этого еще не существует. Абсолютный путь к каталогу, который вы создали, остается неизменным, вы можете проверить это с помощью:

os.path.abspath('.') # . -> current directory, is the one you created
0 голосов
/ 29 марта 2020

os.path.abspath переводит имя файла, указанного относительно вашего текущего рабочего каталога, однако файл не обязательно существует.

Таким образом, первый вызов abpath:

# get the path of the directory
path = os.path.abspath("directory")
print(f"path after creating the directory: {path}")

не делает ничего, кроме размещения вашего текущего рабочего каталога перед строкой «directory», вы можете легко сделать это самостоятельно:

os.getcwd() + '/' + "directory"

Если вы измените свой рабочий каталог с помощью os.chdir("directory"), os.getcwd() вернет P:\Code\Python\directory и добавит второй "\directory" к пути. Здесь вы видите, что файл не должен существовать.

...