Python os模块路径函数

时间:2011-01-07 05:28:24

标签: python

来自文档:

os.path.realpath(path)
Return the canonical path of the specified filename, eliminating any 
symbolic links encountered in the path (if they are supported by the 
operating system).

当我使用现有文件的名称调用它时,我会找到它的路径:/home/myhome/myproject

当我使用'nonsense.xxx'字符串参数调用它时,我仍然可以获得/home/myhome/myproject/nonsense.xxx的路径。这有点不一致,因为看起来nonsense.xxx被视为一个目录而不是一个文件(虽然它既不是:它不存在)。

当我使用空字符串文件名调用它时,我仍然可以获得/home/myhome/myproject的路径。

当文档对realpath()的描述如此之少时,我如何解释这种行为? (我使用的是Python 2.5。)

编辑:有人提出了一种测试文件是否存在的方法。我担心的是不测试文件是否存在。我关心的是考虑行为。

3 个答案:

答案 0 :(得分:2)

os.path对文件是否存在不感兴趣。它只关心构建路径。

realpath从等式中删除已知的符号链接,但不存在的目录被认为是路径的有效元素。

答案 1 :(得分:2)

而不是猜测,只需阅读代码!它在你的python安装中。或者浏览here,它只有14行减去评论。

答案 2 :(得分:0)

在通话之前放置测试,例如“os.path.isfile(x)”,“x is not None”和“os.path.isdir(x)”?