0

我在 Python 中编写了一个函数,它根据密钥标识符文件查找 USB 驱动器,但是当调用它时返回“驱动器中没有磁盘。请将磁盘插入驱动器 D:/'(这是一个 SD 卡读卡器) - 有没有办法让它根据“就绪”的驱动器搜索驱动器号?

def FETCH_USBPATH():
    for USBPATH in ascii_uppercase:
        if os.path.exists('%s:\\File.ID' % USBPATH):
            USBPATH='%s:\\' % USBPATH
            print('USB is mounted to:', USBPATH)
            return USBPATH + ""
    return ""

USBdrive = FETCH_USBPATH()
while USBdrive == "":
    print('Please plug in USB & press any key to continue', end="")
    input()
    FlashDrive = FETCH_USBPATH()

在 cmd 中进行了修复,但结果表明基于命令提示符不适合我的需要。

4

1 回答 1

3

寻找“准备就绪”的驱动器可能会更麻烦,因为它值得满足您的需求。您可能只需通过临时禁用错误消息对话框就可以逃脱SetThreadErrorMode

import ctypes

kernel32 = ctypes.WinDLL('kernel32')

SEM_FAILCRITICALERRORS = 1
SEM_NOOPENFILEERRORBOX = 0x8000
SEM_FAIL = SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS

def FETCH_USBPATH():
    oldmode = ctypes.c_uint()
    kernel32.SetThreadErrorMode(SEM_FAIL, ctypes.byref(oldmode))
    try:
        for USBPATH in ascii_uppercase:
            if os.path.exists('%s:\\File.ID' % USBPATH):
                USBPATH = '%s:\\' % USBPATH
                print('USB is mounted to:', USBPATH)
                return USBPATH
        return ""
    finally:
        kernel32.SetThreadErrorMode(oldmode, ctypes.byref(oldmode))

USBdrive = FETCH_USBPATH()
while USBdrive == "":
    print('Please plug in our USB drive and '
          'press any key to continue...', end="")
    input()
    USBdrive = FETCH_USBPATH()
于 2015-03-16T11:07:24.147 回答