来自文档:
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。)
编辑:有人提出了一种测试文件是否存在的方法。我担心的是不测试文件是否存在。我关心的是考虑行为。
答案 0 :(得分:2)
os.path
对文件是否存在不感兴趣。它只关心构建路径。
realpath从等式中删除已知的符号链接,但不存在的目录被认为是路径的有效元素。
答案 1 :(得分:2)
而不是猜测,只需阅读代码!它在你的python安装中。或者浏览here,它只有14行减去评论。
答案 2 :(得分:0)
在通话之前放置测试,例如“os.path.isfile(x)”,“x is not None”和“os.path.isdir(x)”?