2011-01-07 82 views
0

从文档:Python的os模块路径功能

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。)

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

回答

2

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

realpath消除公式中已知的符号链接,但不存在的目录被假定为路径的有效元素。

+1

os.path doc说:“这个模块在路径名上实现了一些有用的功能”。它并没有说os.path.realpath()会返回一个路径,不管你发送了什么垃圾。但是,这似乎是它的作用。 – H2ONaCl 2011-01-07 05:36:34

0

在调用之前放置诸如“os.path.isfile(x)”,“x is not”和“os.path.isdir(x)”的测试吗?

2

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