os.path.curdir возвращает '.' который абсолютно правдив и абсолютно бесполезен. Чтобы извлечь из этого что-нибудь полезное, вы должны обернуть его os.path.abspath(os.path.curdir)

Зачем включать бесполезную переменную в модуль os.path? Почему бы не сделать os.path.curdir функцией, которая делает для вас os.path.abspath?

Есть ли историческая причина существования os.path.curdir?

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

26
boatcoder 25 Янв 2013 в 02:35

3 ответа

Лучший ответ

Это константа, как и os.path.sep.

Платформы, отличные от POSIX и Windows, могут использовать другое значение для обозначения «текущего каталога». В ОС Risc это, например, @, в старой ОС Macintosh это :.

Это значение используется во всей стандартной библиотеке, чтобы оставаться независимым от платформы.

Используйте взамен os.getcwd(); os.path.abspath() использует эту функцию изнутри, чтобы превратить os.path.curdir в текущий рабочий каталог. Вот реализация POSIX abspath():

def abspath(path):
    """Return an absolute path."""
    if not isabs(path):
        if isinstance(path, _unicode):
            cwd = os.getcwdu()
        else:
            cwd = os.getcwd()
        path = join(cwd, path)
    return normpath(path)
35
Martijn Pieters 24 Янв 2013 в 22:46

Значение os.path.curdir равно "." в Linux, Windows и OS X. Однако это ":" в старых системах Mac OS 9. Python существует достаточно долго, чтобы это было важно.

7
Dietrich Epp 24 Янв 2013 в 22:40

Это просто постоянное, зависящее от платформы значение. Из документов (которые стоит прочитать):

Строка константы, используемая операционной системой для ссылки на текущий каталог. Это '.' для Windows и POSIX. Также доступно через os.path.

Вы можете использовать os.getcwd().

6
cdhowie 24 Янв 2013 в 22:39