Python:如何只搜索USB闪存驱动器?

Python:如何只搜索USB闪存驱动器?,python,usb,file-search,Python,Usb,File Search,我有一个Python脚本,该脚本设计为从USB闪存驱动器运行,如果从PC硬盘驱动器运行,它将无法工作,因此可以安全地假设所有副本都存在于连接的USB上 我有另一个脚本设计从计算机硬盘上运行,它寻找这些USB脚本并以某种方式配置它们。显然,为了节省时间,我不想搜索整个硬盘驱动器,因为我知道它们只在USB上。有没有办法只在连接的USB上搜索文件,跳过搜索本地驱动器,通过检查驱动器号之类的方法?我想你可以在下面找到答案 他使用pyUsb处理usb文件。希望这会有所帮助。这里有一些示例代码,可以使用ct

我有一个Python脚本,该脚本设计为从USB闪存驱动器运行,如果从PC硬盘驱动器运行,它将无法工作,因此可以安全地假设所有副本都存在于连接的USB上


我有另一个脚本设计从计算机硬盘上运行,它寻找这些USB脚本并以某种方式配置它们。显然,为了节省时间,我不想搜索整个硬盘驱动器,因为我知道它们只在USB上。有没有办法只在连接的USB上搜索文件,跳过搜索本地驱动器,通过检查驱动器号之类的方法?

我想你可以在下面找到答案


他使用pyUsb处理usb文件。希望这会有所帮助。

这里有一些示例代码,可以使用
ctypes
确定Windows上每个活动逻辑驱动器的驱动器类型

import ctypes

# Drive types
DRIVE_UNKNOWN     = 0  # The drive type cannot be determined.
DRIVE_NO_ROOT_DIR = 1  # The root path is invalid; for example, there is no volume mounted at the specified path.
DRIVE_REMOVABLE   = 2  # The drive has removable media; for example, a floppy drive, thumb drive, or flash card reader.
DRIVE_FIXED       = 3  # The drive has fixed media; for example, a hard disk drive or flash drive.
DRIVE_REMOTE      = 4  # The drive is a remote (network) drive.
DRIVE_CDROM       = 5  # The drive is a CD-ROM drive.
DRIVE_RAMDISK     = 6  # The drive is a RAM disk.

# Map drive types to strings
DRIVE_TYPE_MAP = { DRIVE_UNKNOWN     : 'DRIVE_UNKNOWN',
                   DRIVE_NO_ROOT_DIR : 'DRIVE_NO_ROOT_DIR',
                   DRIVE_REMOVABLE   : 'DRIVE_REMOVABLE',
                   DRIVE_FIXED       : 'DRIVE_FIXED',
                   DRIVE_REMOTE      : 'DRIVE_REMOTE',
                   DRIVE_CDROM       : 'DRIVE_CDROM',
                   DRIVE_RAMDISK     : 'DRIVE_RAMDISK'}


# Return list of tuples mapping drive letters to drive types
def get_drive_info():
    result = []
    bitmask = ctypes.windll.kernel32.GetLogicalDrives()
    for i in range(26):
        bit = 2 ** i
        if bit & bitmask:
            drive_letter = '%s:' % chr(65 + i)
            drive_type = ctypes.windll.kernel32.GetDriveTypeA('%s\\' % drive_letter)
            result.append((drive_letter, drive_type))
    return result


# Test
if __name__ == '__main__':
    drive_info = get_drive_info()
    for drive_letter, drive_type in drive_info:
        print '%s = %s' % (drive_letter, DRIVE_TYPE_MAP[drive_type])
    removable_drives = [drive_letter for drive_letter, drive_type in drive_info if drive_type == DRIVE_REMOVABLE]
    print 'removable_drives = %r' % removable_drives
…它打印

C: = DRIVE_FIXED
D: = DRIVE_FIXED
E: = DRIVE_CDROM
removable_drives = []
…在插入U盘和

C: = DRIVE_FIXED
D: = DRIVE_FIXED
E: = DRIVE_CDROM
F: = DRIVE_REMOVABLE
removable_drives = ['F:']
……之后


一旦你有了可移动驱动器的列表,你就可以在每个驱动器上使用。

你在哪个平台上?Linux?窗户?不管怎样,你都走在正确的轨道上。首先识别驱动器,然后搜索它们。@Hasturkun根据“驱动器号”的用法,我猜是Windows。我认为这不能回答问题。链接的答案指向
pyusb
,它允许您进行低级USB访问。我怀疑询问者在这种情况下是否能使用这种方法。