wbzxz 发表于 2023-5-9 23:43:52

简单的路径问题

请问下面这个代码中,为什么盘符C显示的不一样呢?为什么有的后面是双斜杠,有的后面是单斜杠呢??

>>> Path().resolve()
WindowsPath('C:/Users/Lenovo/AppData/Local/Programs/Python/Python38')
>>> Path().resolve().parts
('C:\\', 'Users', 'Lenovo', 'AppData', 'Local', 'Programs', 'Python', 'Python38')
>>>

isdkz 发表于 2023-5-9 23:44:11

这是因为在Windows系统中,路径可以使用单斜杠或双斜杠来表示。在Python中,使用Path库来表示文件路径时,它会自动将单斜杠转换为双斜杠,以便与Windows系统兼容。但是在输出路径时,它会将双斜杠转换为单斜杠,以便更易读。因此,在输出路径时,C盘的双斜杠被转换为了单斜杠。

sfqxx 发表于 2023-5-10 07:03:18

在Windows系统中,路径分隔符默认为反斜杠`\`。但是Python中,反斜杠本身也是用来转义字符的,因此如果要使用反斜杠作为路径分隔符,需要进行双反斜杠转义,即两个反斜杠`\\`。

在上述代码中,`Path().resolve()`会返回一个绝对路径对象,即包含了这个文件所在的完整路径。在Windows系统中,Python自动将路径分隔符进行了转换,显示为正斜杠`/`。所以`C:/Users/Lenovo/AppData/Local/Programs/Python/Python38`实际上是等价于`C:\Users\Lenovo\AppData\Local\Programs\Python\Python38`的。

而`Path().resolve().parts`则返回了路径中每一级文件夹的名称,这个列表的元素使用了操作系统默认的路径分隔符反斜杠,所以结果中出现的`\\`表示单个反斜杠,而`C:\\`则表示盘符C的根目录。
有用请设置最佳答案
页: [1]
查看完整版本: 简单的路径问题