为什么python有os.path.curdir

Why does python have os.path.curdir

提问人:boatcoder 提问时间:1/25/2013 最后编辑:Mona Jalalboatcoder 更新时间:6/15/2017 访问量:43940

问:

os.path.curdir返回 '.',这是完全真实的,完全没有价值。要从中获得任何有用的东西,您必须将其包装起来os.path.abspath(os.path.curdir)

为什么要在 os.path 模块中包含一个无用的变量?为什么不让 os.path.curdir 成为为您执行 os.path.abspath 的函数呢?

存在有什么历史原因吗?os.path.curdir

也许无用有点苛刻,但不是很有用似乎很弱来形容这一点。enter image description here

评论

8赞 Dietrich Epp 1/25/2013
你想要而不是.os.getcwd()os.path.abspath(os.path.curdir)
0赞 Hrushi 4/13/2020
可以使用它来简化代码的输出,例如for (root,dirs,files) in os.walk(os.curdir):

答:

60赞 Martijn Pieters 1/25/2013 #1

它是一个常数,就像.os.path.sep

POSIX 和 Windows 以外的平台可以使用不同的值来表示“当前目录”。例如,在 Risc OS 上,它是 ,在旧的 Macintosh OS 上,它是 .@:

该值在整个标准库中使用,以保持与平台无关。

请改用 os.getcwd(); 无论如何,在后台使用该功能都会变成当前的工作目录。以下是 POSIX 的实现:os.path.abspath()os.path.curdirabspath()

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)

评论

0赞 boatcoder 1/25/2013
是的,我忘记了某些操作系统没有“.”作为curdir。谢谢。
9赞 cdhowie 1/25/2013 #2

它只是一个恒定的、与平台相关的值。来自文档(值得一读):

操作系统用于引用当前目录的常量字符串。这适用于 Windows 和 POSIX。也可通过 .'.'os.path

您可以考虑改用 os.getcwd()。

9赞 Dietrich Epp 1/25/2013 #3

的值在 Linux、Windows 和 OS X 上。但是,它位于旧的 Mac OS 9 系统上。Python 已经存在了足够长的时间,这曾经很重要。os.path.curdir"."":"