簡體   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