2012-10-01 13 views
8

Python'da Kameralar, SD kartlar ve harici Sabit Sürücüler gibi bağlı depolama aygıtlarının bir listesini almanın bir yolu var mı?Python: OS Kullanılabilir depolama aygıtlarının bağımsız listesi

+1

'Depolama aygıtını' nasıl tanımlarsınız? 'Bağlantılı' nasıl? –

+0

@Tichodroma Mac Finder'da, Windows Gezgini'nde veya Ubuntu dosya tarayıcısında görünen harici aygıtların listesi. –

+2

'external' tanımla – njzk2

cevap

5

Aşağıdakiler Linux ve Windows için çalışmalıdır. Bu sadece sürücüleri değil, TÜM sürücüleri listeler!

import subprocess 
import sys 

#on windows 
#Get the fixed drives 
#wmic logicaldisk get name,description 
if 'win' in sys.platform: 
    drivelist = subprocess.Popen('wmic logicaldisk get name,description', shell=True, stdout=subprocess.PIPE) 
    drivelisto, err = drivelist.communicate() 
    driveLines = drivelisto.split('\n') 
elif 'linux' in sys.platform: 
    listdrives=subprocess.Popen('mount', shell=True, stdout=subprocess.PIPE) 
    listdrivesout, err=listdrives.communicate() 
    for idx,drive in enumerate(filter(None,listdrivesout)): 
     listdrivesout[idx]=drive.split()[2] 
# guess how it should be on mac os, similar to linux , the mount command should 
# work, but I can't verify it... 
elif 'macosx' ... 
    do the rest.... 

Linux için yukarıdaki yöntem çok ham olduğunu ve bir şey daha iyi ayarlanmış, python-dbus ile sorgulama içine bakmak istiyorsanız, vb sys ve procfs gibi sürücüleri dönecektir.

+1

Muhtemelen, bağlama noktalarından hangilerinin mevcut kullanıcıya ait olduğunu (muhtemelen masaüstünde oturum açan kullanıcı) tespit eden bir adım eklerseniz, liste 'harici aygıtlar' listesine çok yakın olacaktır. İlk olarak ne çıkarmak istediğinizi kaldırabilmeniz gerekir. – 9000

+1

işte burada [Udisks'i dbus ile nasıl kullanacağınız] (http://stackoverflow.com/a/5081937/4279). Özellik [DeviceIsRemovable] (http://hal.freedesktop.org/docs/udisks/Device.html#Device:DeviceIsRemovable) yakın olabilir. – jfs

+0

Sadece linux üzerinde/proc/mounts okuyabilirsiniz. – LtWorf