为什么Python有os.path.curdir

35 投票
3 回答
45897 浏览
提问于 2025-04-17 13:35

os.path.curdir 返回的是 '.',这其实是个真实的结果,但对我们来说没什么用。要想从中得到有用的信息,你得把它放在 os.path.abspath(os.path.curdir) 里。

那为什么在 os.path 模块里要包含一个没用的变量呢?为什么不把 os.path.curdir 设计成一个可以自动帮你做 os.path.abspath 的函数呢?

这个 os.path.curdir 存在是出于某种历史原因吗?

也许说它没用有点过了,但说它不太有用也不够准确来形容这个情况。

这里输入图片描述

3 个回答

9

os.path.curdir 的值在 Linux、Windows 和 OS X 系统上都是 ".",也就是当前目录的意思。不过,在老版的 Mac OS 9 系统上,它的值是 ":"。Python 发展了很长时间,这个区别以前是很重要的。

9

这只是一个常量,具体的值会根据不同的平台而不同。从文档(值得一读)中可以了解到:

这个常量字符串是操作系统用来表示当前目录的。在Windows和POSIX系统中,这个值是'.'。你也可以通过os.path来获取。

你可以考虑使用os.getcwd()来代替。

60

这其实是一个常量,就像 os.path.sep 一样。

除了 POSIX 和 Windows 之外的其他平台,可能会用不同的符号来表示“当前目录”。比如在 Risc OS 系统中,它用 @ 来表示,而在旧版的 Macintosh OS 中则用 :

这个值在标准库中被广泛使用,以确保在不同平台上都能正常工作。

建议使用 os.getcwd();实际上,os.path.abspath() 在内部会调用这个函数,把 os.path.curdir 转换成当前工作目录。下面是 abspath() 在 POSIX 系统中的实现:

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)

撰写回答