【发布时间】:2017-01-04 13:57:53
【问题描述】:
我想获取插入计算机的可移动驱动程序的列表。
我认为可以通过使用一些注册表来完成,但我不知道具体如何。
如果有其他方式我想听听。
注意:重要的是我将能够将可移动驱动器与固定驱动器分开。
【问题讨论】:
我想获取插入计算机的可移动驱动程序的列表。
我认为可以通过使用一些注册表来完成,但我不知道具体如何。
如果有其他方式我想听听。
注意:重要的是我将能够将可移动驱动器与固定驱动器分开。
【问题讨论】:
算法很简单:
这是它在 Python 中的样子(使用 PyWin32 包装器)。将任何win32con.DRIVE_* 常量添加到 drive_types 元组以获得不同的驱动器类型组合:
code00.py:
#!/usr/bin/env python3
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("{0:s} drives:".format(display_text))
for drive in drives:
print("{0:s} ".format(drive), end="")
print("\n")
if __name__ == "__main__":
print("Python {0:s} {1:d}bit on {2:s}\n".format(" ".join(item.strip() for item in sys.version.split("\n")), 64 if sys.maxsize > 0x100000000 else 32, sys.platform))
main()
print("\nDone.")
输出:
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q041465580]> "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\Scripts\python.exe" code00.py Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] 64bit on win32 All drives: C: D: E: F: G: H: Removable drives: D: Fixed and CDROM drives: C: E: F: G: H: Done.
【讨论】:
THERE IS NO DISK IN THE DRIVE. PLEASE INSERT A DISK INTO DRIVE H:,也许我需要了解如何使用ADB Shell...再次感谢
我自己也有类似的问题。隔离@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:\\']
【讨论】: