我正在寻找一种在Windows机器上获取所有本地驱动器的方法, 到目前为止,我尝试了两个选项
1)
# Win32Com
from win32com.client import Dispatch
import sys
fso = Dispatch('Scripting.FileSystemObject')
for drive in fso.Drives:
print drive, drive.DriveType
2)
# win32api
import win32api
import win32file
drives = (drive for drive in win32api.GetLogicalDriveStrings().split("\000") if drive)
for drive in drives:
print drive, win32file.GetDriveType(drive)
这两种方式(几乎)很好,我得到了我的驱动器列表,如:
A: 1 // Removable
C: 2 // Fixed
D: 2
E: 2
G: 2 // Fixed (??? SUBST'ed drive)
I: 4 // Cd-Rom
X: 3 // Network
但是G:驱动器是SUBST的驱动器(例如:使用SUBST G:C:\ TEST创建), 我无法找到区别于“真正的”本地驱动器的方法。
有什么想法吗?
TIA, 巴勃罗
答案 0 :(得分:1)
Google告诉我,如果您尝试为SUBST-ed驱动器获取GUID,它将会失败:
>>> import win32file
>>> win32file.GetVolumeNameForVolumeMountPoint("C:\\")
'\\\\?\\Volume{50c800a9-c62e-11df-b5bb-806e6f6e6963}\\'
>>> win32file.GetVolumeNameForVolumeMountPoint("K:\\")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pywintypes.error: (87, 'GetVolumeNameForVolumeMountPoint',
'The parameter is incorrect.')
这似乎有效,但可能不太可靠。