在Python中,似乎有(至少)两种不同的获取父目录路径的方法,这两种方法我都见过。以下是等价的还是我遗漏了什么?你知道吗
os.path.dirname(my_dir)
os.path.join(my_dir, os.pardir)
前者较短,但可能不太清晰(尤其是当上升超过1层时)。我在努力想它还有什么可能的用途欧斯帕迪尔或者帕迪尔?你知道吗
Zen of Python: "There should be one-- and preferably only one --obvious way to do it"
Tags:
检查以下线路。父目录由第一个目录给出(在本例中,对于html,它是/var/www)。欧斯帕迪尔显示了一个“…”,这是一个常量,几乎被大多数基于Windows和POSIX的操作系统用来引用父目录。当你用'my_dir'连接它时,你会得到my_dir+'..'这不是你需要的。你知道吗
这两件事是不相等的。如果您阅读documentation,您将看到
dirname
只是返回您提供的路径的目录。你知道吗所以
os.path.dirname("/foo/bar/file.txt")
将返回/foo/bar
,os.path.dirname("/foo/bar/")
也将返回/foo/bar
顾名思义,
os.path.join
将路径片段连接在一起。你知道吗所以如果我想得到
/foo/bar/file.txt
,我可以使用os.path.join("/foo/bar/", "file.txt")
。在您给出的示例中,os.path.join("/foo/bar/", os.pardir)
将给出/foo/bar/..
。你知道吗另一种常用的方法是:
其中
parent
是父目录,分配给_
的值是file.txt
。原因是split
和dirname
在做两件稍有不同的事情。split
返回父目录的名称和文件名,而dirname
只返回第一部分,基本上是上面一行的速记方法。你知道吗关于
pardir
的用例并不多。如果您想看一些,请查看this。你知道吗它们不是等价的。你知道吗
区别在于如何处理以
os.sep
结尾的路径:但是:
那么你应该用哪一个呢?都不是。改用pathlib module:
如果您绝对不能使用pathlib,请使用
os.path.dirname
。想要在文件路径中有pardir段(..
)的情况非常罕见,它们比任何其他情况都更容易引起问题。你知道吗相关问题 更多 >
编程相关推荐