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。)
补充:有人建议了一种测试文件是否存在的方法。但我关心的不是测试文件是否存在,而是解释这种行为。
3 个回答
0
在调用之前,先放一些测试,比如“os.path.isfile(x)”、“x 不是 None”和“os.path.isdir(x)”?
2
与其猜来猜去,不如直接看看代码!代码就在你的Python安装目录里。或者你可以在这里浏览一下,代码只有14行,去掉注释的话更少。
2
os.path
这个模块并不关心文件是否存在,它只是用来构建文件路径的。
而 realpath
则会把已知的符号链接(也就是指向其他文件或目录的快捷方式)排除在外,但即使某些目录不存在,它们仍然会被认为是路径中的有效部分。