在Pathlib中转换路径时遇到问题

时间:2019-04-27 15:25:49

标签: python python-3.7 pathlib

我必须输入一个看起来像这样的文件路径:

'C:/Users/xxx/Desktop/test_folder'

它作为字符串存储在变量中,因此:

path_intake = 'C:/Users/xxx/Desktop/test_folder'

我想将该路径分配给我的

p = Path(path_intake)

但是,当p进入path_intake时,它将路径更改为:

'C:\Users\xxx\Desktop\test_folder'

这不是我想要的,因为.rglob只能读取这样的路径:

p = Path(C:/Users/xxx/Desktop/test_folder)

如何通过采用第一条路径来获得这条路径?

1 个答案:

答案 0 :(得分:0)

C:/Users/xxx/Desktop/test_folder

不是规范的Windows路径字符串。众所周知,Windows使用反斜杠。因此,如果您提供/pathlib会将路径转换为平台的规范路径字符串,即

C:\Users\xxx\Desktop\test_folder

但是两个Path对象是相同的,因为您很快就会知道是否这样做:

>>> p = pathlib.Path(r"C:\Users\xxx\Desktop\test_folder")     
>>> p2 = pathlib.Path(r"C:/Users/xxx/Desktop/test_folder")     
>>> p == p2     
True

您说“ .rglob只能读取这样的路径:C:/Users/xxx/Desktop/test_folder”是不正确的。为了证明这一点,请执行以下操作:

>>> list(p.rglob("*.txt")) == list(p2.rglob("*.txt"))
True

Path对象是相同的,您可以在任何一个对象上调用.rglob(),以获得预期的结果。