繁体   English   中英

为什么 Python 的 pathlib 和 os lib 为 Windows 中的映射网络驱动器返回不同的结果?

[英]Why does Python's pathlib and os lib return different results for mapped network drives in Windows?

尝试在 Windows 10 上使用 Python 3 解析路径。有问题的路径可用作映射网络驱动器。 (这恰好是通过 VirtualBox 共享文件夹完成的,但我希望这与此处无关)。

好的旧os.path.abspath为我提供了一个以在 Windows 中映射的驱动器号开头的路径。 这正是我所期望和需要的。

但是当我尝试升级到pathlibresolve函数时,我得到了不同的结果,用 UNC 表示法。 这不是预期的,对我的目的没有用。 (许多程序不接受 UNC 路径作为输入,它们需要“本地”路径。)

  1. 这种差异的原因是什么?
  2. 如何控制这种行为,以便pathlib可以返回基于驱动器号的路径?
  3. 任何人都可以指出我的文档吗? 我在 Python 的文档中找不到它。

演示:

PS C:\Users\user> python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import pathlib
>>> path = 'd:\\asdf'
>>> print(os.path.abspath(path))
d:\asdf
>>> print(pathlib.Path(path).resolve())
\\vboxsrv\code\asdf

我在 Mac 上的并行 Windows 上遇到了这个问题。 这是一个丑陋的修复,但如果您提前知道驱动器映射,您可以执行以下操作:

filepath = pathlib.Path('.')
filepathstr = str(filepath.resolve()).replace('\\\\Mac\\Home', 'W:')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM