Python检测USB驱动器然后分配驱动器号?

时间:2009-11-20 15:26:03

标签: python windows

这是问题所在。我们有100个外部500GB USB驱动器。每个驱动器将在一年中前往新的位置。自动检测USB驱动器是否已插入Windows系统,然后分配Z:\驱动器盘符的最佳方法是什么?这些USB驱动器将被插入许多不同的计算机,所以像这样的脚本

import subprocess

diskpart_data = "z-drive.txt"
open (diskpart_data, "w").write ("""
select volume F: 
assign letter=Z
""")
subprocess.call ('diskpart /s %s' % diskpart_data)
由于不同Windows系统上移动USB驱动器的动态特性,

难以使用?您可以通过WMI自动检测还是使用NTFS进行某种卷装?

2 个答案:

答案 0 :(得分:2)

如terabytest所说,你可以从驱动器根目录中的autorun.inf运行一个脚本。就个人而言,我会使用批处理脚本:

(echo select volume %~d0 && echo assign letter=Z) | diskpart

%~d0检索当前正在执行的批处理文件的驱动器号。

如果这还不够,可以通过使用Windows API的device management functions在插入可移动驱动器时获得通知。您必须首先使用RegisterDeviceNotification()注册通知,然后在事件循环中处理WM_DEVICECHANGE消息。不幸的是,这需要一个事件循环,我不知道如何在python中轻松创建一个(除了从头创建它:here是一个示例消息循环,请注意,在您的情况下,您不需要创建一个窗口,只有一个消息循环)。

答案 1 :(得分:1)

您可以尝试将该脚本编译为exe,并在运行脚本的USB密钥中生成一个自动运行文件。然后脚本完成它的事情。 为了分配Z:\ letter的东西,我建议使用Win32Com(即使我不知道它是否可以处理这个)或者使用ctypes来控制windows dll。