os.path.abs()与os.path.realpath()的一点区别
Posted cnhkzyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了os.path.abs()与os.path.realpath()的一点区别相关的知识,希望对你有一定的参考价值。
相同点
1. 两者都是返回绝对路径,如果参数path为空,则返回当前文件所在目录的绝对路径
当前py文件所在的目录是revise
print(os.path.abspath("")) print(os.path.realpath("")) 运行结果: D:python_workshoppython6 evise D:python_workshoppython6 evise
2. 如果给一个不存在的文件名作为相对路径的path,会将当前所在目录和文件名拼接起来,返回拼接后的绝对路径
当前目录下并无"apple.txt",这个文件是不存在的。 注意是文件名,不是文件实体,这一点很重要, 这两个方法的作用是对给定文件名前加上当前工作目录的绝对路径,至于你给定的文件名对应文件是否真的存在并不关心(因为你有可能是想要创建文件呢)
print(os.path.abspath("apple.txt")) print(os.path.realpath("apple.txt")) 运行结果: D:python_workshoppython6 eviseapple.txt D:python_workshoppython6 eviseapple.txt
不同点
os.path.abspath()返回绝对路径,但不处理符号链接(注意linux中的符号链接不同于windows中的快捷方式)
os.path.realpath()先处理路径中的符号链接,再返回绝对路径
$ ls -l total 0 -rw-rw-r-- 1 guest guest 0 Jun 16 08:36 a lrwxrwxrwx 1 guest guest 1 Jun 16 08:36 b -> a $ python Python 2.7.11 (default, Dec 15 2015, 16:46:19) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from os.path import abspath, realpath >>> abspath(‘b‘) ‘/home/guest/play/paths/b‘ >>> realpath(‘b‘) ‘/home/guest/play/paths/a‘
参考文章
https://segmentfault.com/q/1010000014420477?utm_source=index-hottest
以上是关于os.path.abs()与os.path.realpath()的一点区别的主要内容,如果未能解决你的问题,请参考以下文章