是否可以使用python在Windows上只获取可移动的USB驱动器和(不是必需的)标签?在linux(ubuntu)上,您只需要列出/media
文件夹。
这是我当前的代码(列出所有可用的驱动器号,包括系统驱动器,cd / dvd驱动器等):
import win32api
dv = win32api.GetLogicalDriveStrings()
dv = dv.split('\000')[:-1]
print dv
结果是这样的:
['C:\\', 'D:\\', 'E:\\']
我只想要usb大容量存储驱动器......任何帮助?
...问候
答案 0 :(得分:0)
import win32file
def rdrive(d):
# returns boolean, true if drive d is removable
return win32file.GetDriveType(d)==win32file.DRIVE_REMOVABLE
答案 1 :(得分:0)
您还可以使用ctypes模块获取可移动驱动器列表。
from ctypes import windll
def get_drives():
drives = []
bitmask = windll.kernel32.GetLogicalDrives()
for letter in map(chr, range(65, 91)):
if bitmask & 1:
drives.append(letter)
bitmask >>= 1
return drives
您可以使用相同的列表,并将其与新的驱动器列表进行比较,以添加可移动驱动器。
drives_list=get_drives()
drives_list1=[]
while True:
drives_list1=get_drives()
if len(list(set(drives_list1) - set(drives_list))) > 0:
print("Drives Added"+str(set(drives_list1) - set(drives_list)))
有关更多信息,请参见github上的此仓库drivemonitoring。
答案 2 :(得分:0)
我自己也有类似的问题。使用@ user2532756的答案中的逻辑,我将这个快速功能组合在一起,以解决该问题的所有新访客:
基本上,只需调用该函数,它就会将所有可移动驱动器中的list
返回给调用者。
import win32api
import win32con
import win32file
def get_removable_drives():
drives = [i for i in win32api.GetLogicalDriveStrings().split('\x00') if i]
rdrives = [d for d in drives if win32file.GetDriveType(d) == win32con.DRIVE_REMOVABLE]
return rdrives
例如:对get_removable_drives()
的调用将输出:
['E:\\']
答案 3 :(得分:0)
psutil
库比 win32api
好得多。它提供了大量有关驱动器的信息并且格式很好。 https://github.com/giampaolo/psutil
import psutils as p
externals = [i.mountpoint for i in p.disk_partitions() if 'removable' in i.opts]