如何获取插入计算机的可移动驱动器列表?

时间:2017-01-04 13:57:54

标签: python windows pywin32

我想获得一个插入计算机的可移动驱动程序列表。

我认为可以通过使用一些注册表来完成,但我不知道究竟是怎么做的。

如果还有其他方式我想听听它。

注意:我能够将可移动驱动器与固定驱动器分开是很重要的。

2 个答案:

答案 0 :(得分:4)

算法很简单:

这是它在 Python (使用 pywin32 包装器)中的样子。将任何win32con.DRIVE_*常量添加到 drive_types 元组以获得不同的驱动器类型组合:

code.py

import sys
import win32con
from win32api import GetLogicalDriveStrings
from win32file import GetDriveType


def get_drives_list(drive_types=(win32con.DRIVE_REMOVABLE,)):
    drives_str = GetLogicalDriveStrings()
    drives = [item for item in drives_str.split("\x00") if item]
    return [item[:2] for item in drives if drive_types is None or GetDriveType(item) in drive_types]


def main():
    drive_filters_examples = [
        (None, "All"),
        ((win32con.DRIVE_REMOVABLE,), "Removable"),
        ((win32con.DRIVE_FIXED, win32con.DRIVE_CDROM), "Fixed and CDROM"),
    ]
    for (drive_types_tuple, display_text) in drive_filters_examples:
        drives = get_drives_list(drive_types=drive_types_tuple)
        print("{:s} drives:".format(display_text))
        for drive in drives:
            print("{:}  ".format(drive), end="")
        print("\n")


if __name__ == "__main__":
    print("Python {:s} on {:s}\n".format(sys.version, sys.platform))
    main()

<强>输出

(py35x64_test) e:\Work\Dev\StackOverflow\q041465580>"e:\Work\Dev\VEnvs\py35x64_test\Scripts\python.exe" code.py
Python 3.5.4 (v3.5.4:3f56838, Aug  8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32

All drives:
C:  D:  E:  F:  G:  H:

Removable drives:
D:

Fixed and CDROM drives:
C:  E:  F:  G:  H:

答案 1 :(得分:1)

我自己也有类似的问题。隔离@CristiFati仅对可移动驱动器的答案,我将这个快速(非常简单)的功能组合在一起,以解决此问题的所有新访客:

基本上,只需调用该函数,它就会将所有可移动驱动器中的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:\\']