smartsy 发表于 2024-6-6 06:30:02

相对路径与绝对路径

这个用法我没有太明白,首先代码是什么意思?是本来在D盘的文件通过转换以后可以自动到E盘去吗?这种用法具体用在哪里呢?按照概念来说的话,所有文件都应该是绝对路径,那我为啥要转换成相对路径呢?

smartsy 发表于 2024-6-6 06:32:04

或者说利用resolve()转换以后是什么效果?就是换了一个文件夹吗?

smallwh 发表于 2024-6-6 11:05:45

首先分析代码
1.Path('.') 等用来创建一个 WindowsPath 对象来表示路径。说白了,就类似于用字符串表示路径,只不过 WindowsPath 对象有一些高级、方便的方法。
>>> Path(r'C:\1.txt')
WindowsPath('C:/1.txt')
>>>##f = open(r'C:\1.txt') 与 f = open(Path(r'C:\1.txt')) 效果相同
2.path('.').resolve()是将相对路径转化为绝对路径

相对路径的应用场景
设想你写了一个程序,程序需要打开与自己在相同文件夹下的 1.txt 文件。你把这个程序和文件同时存在 D 盘的根目录里。
若用绝对路径打开文件,代码可能长这样:f = open(r'D:\1.txt')
有一天,你把这个程序移动到了 E 盘,因为文件与程序在相同文件夹下,所以文件也要移动到 E 盘。
这时候,你就要把代码手动改成f = open(r'E:\1.txt')
不仅不方便,而且灵活性很差。
事实上,大多数情况下,你不知道文件究竟在哪,只知道它在相对于程序在哪儿
这时候,我们便用 '.' 表示程序当前所在的目录,'..' 表示上一级目录,而 f = open(r'.\1.txt') 会打开当前所在的目录下的 1.txt 文件
这时候的 '.',就交给系统自己确定了

利用 resolve() 转换以后,用 '.' 表示的部分就会改成当前所在的目录
也就是说,随着当前所在的目录不同, resolve() 所得结果就不同
页: [1]
查看完整版本: 相对路径与绝对路径