os.path.abs()与os.path.realpath()的一点区别

相同点

1. 两者都是返回绝对路径,如果参数path为空,则返回当前文件所在目录的绝对路径

当前py文件所在的目录是revise

print(os.path.abspath(""))
print(os.path.realpath(""))

运行结果:
D:\python_workshop\python6\revise
D:\python_workshop\python6\revise

2. 如果给一个不存在的文件名作为相对路径的path,会将当前所在目录和文件名拼接起来,返回拼接后的绝对路径

前目录下并无"apple.txt",这个文件是不存在的。 注意是文件名,不是文件实体,这一点很重要, 这两个方法的作用是对给定文件名前加上当前工作目录的绝对路径,至于你给定的文件名对应文件是否真的存在并不关心(因为你有可能是想要创建文件呢)

print(os.path.abspath("apple.txt"))
print(os.path.realpath("apple.txt"))


运行结果:
D:\python_workshop\python6\revise\apple.txt
D:\python_workshop\python6\revise\apple.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://stackoverflow.com/questions/37863476/why-would-one-use-both-os-path-abspath-and-os-path-realpath/37863619#37863619

https://segmentfault.com/q/1010000014420477?utm_source=index-hottest

猜你喜欢

转载自www.cnblogs.com/cnhkzyy/p/9271462.html