2016-10-19 7 views
0

私にはSDカードを持つUSBコンポジットデバイスがあります。 Pythonを使って、デバイスが接続されているときにSDカードのドライブ文字を見つける方法が必要です。誰にもこの経験はありますか?最初はWindowsで動作する必要がありますが、最終的にはMacとLinuxに移植する必要があります。Pythonを使用してUSBデバイスのドライブ文字を確認します

答えて

1

USBポートにSDカードが接続されていません。あなたが始めるためには、 Windowsで試してみてください。 Golden's WMIをインストールしてください。私はWindowsの.zipがインストールされないことが分かったが、pipバージョンはうまく動作するか、少なくともWin7では動作する。次に、このようなコードで論理ディスクをリストすることができます。

>>> import wmi 
>>> c=wmi.WMI() 
... 
>>> for disk in c.Win32_LogicalDisk(): 
...  print(disk) 

このコードでは、NASに関する記述が含まれているため、SDカードに期待しています。様々な洗練が可能です。

1

ビルのアドバイスのおかげで、私はWMIクエリを使用してこの問題を解決することができました。彼の答えで述べたように、Tim GoldenのWMI moduleをインストールする必要があります。

この例では、「WDC WD20EZRX-00D8PB0 ATA Device」というモデルのディスクのドライブ文字を検索します。接続されているすべてのドライブを表示します。

import wmi 
c = wmi.WMI() 

for drive in c.Win32_DiskDrive(): 
    print drive 

あなたはモデルを持っていたら、クエリを次のように追加することができます

Drive letter: K: 

まず適切なディスクが見つかった場合、そのディスクが検索されて出力

import wmi 
c = wmi.WMI() 

for disk in c.query('SELECT * FROM Win32_DiskDrive WHERE Model LIKE "WDC WD20EZRX-00D8PB0 ATA Device"'): 
    deviceID = disk.DeviceID 

    for partition in c.query('ASSOCIATORS OF {Win32_DiskDrive.DeviceID="' + deviceID + '"} WHERE AssocClass = Win32_DiskDriveToDiskPartition'): 

     for logical_disk in c.query('ASSOCIATORS OF {Win32_DiskPartition.DeviceID="' + partition.DeviceID + '"} WHERE AssocClass = Win32_LogicalDiskToPartition'): 
      print('Drive letter: {}'.format(logical_disk.DeviceID)) 

最終的に論理ディスクボリュームがパーティションに見つかります。

+0

これをスレッド内で実行しようとしている場合は、[非常に役立つ記事](http://stackoverflow.com/a/14428972/4842476)を参照してください。 pythoncomをインポートし、pythoncom.CoInitialize()を呼び出す必要があります。 – jgrant

関連する問題