Кросс-платформенный способ составления списка дисков на Linux, Windows и Mac с использованием Python?
Я использую Python2.6. Я пытаюсь перечислить диски, которые могут быть в системе.
В Windows это может быть что-то вроде C:/
, D:/
, E:/
и т.д. В Linux это может быть что-то вроде /boot
, /media/SDCard
и т.д. И я не знаю, на что это похоже Mac. Может быть, что-то в /Volume.
Кто-нибудь знает кроссплатформенный способ (то есть тот, который работает на Linux, Windows и Mac) в Python?
Спасибо!
Ответы
Ответ 1
На Linux-устройствах нет единой схемы именования, которая гарантирует вам форматируемое блочное устройство. Существуют соглашения, но они могут варьироваться в широких пределах, и я могу назвать свой флеш-накопитель/Thomas/O, если я захочу, и в Python нет кросс-платформенного способа:
- То/Томас/О соответствует /dev/sdf 1
- Для этого /dev/sdf 1 может быть создана файловая система FAT32
- Это /dev/sdf не предпочтительнее /dev/sdf 1
Я уверен, что нет и кросс-платформенного модуля Python, который позволит вам определить, что H:/является форматируемым в системе Windows, но это Z:/is not.
Для каждой системы требуются собственные проверки и проверки, которые вы могли бы лучше всего изучить при изучении программного обеспечения для управления дисками с открытым исходным кодом.
Ответ 2
Пакет psutil (https://pypi.python.org/pypi/psutil) имеет функцию disk_partitions.
Окна:
>>> import psutil
>>> psutil.disk_partitions()
[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='E:\\', mountpoint='E:\\', fstype='', opts='cdrom'), sdiskpart(device='F:\\', mountpoint='F:\\', fstype='NTFS', opts='rw,fixed')]
Linux:
>>> import psutil
>>> psutil.disk_partitions()
[sdiskpart(device='/dev/sda1', mountpoint='/', fstype='ext4', opts='rw,errors=remount-ro'), sdiskpart(device='/dev/sr0', mountpoint='/media/VBOXADDITIONS_4.3.10_93012', fstype='iso9660', opts='ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500,uhelper=udisks')]
Ответ 3
Ответ Эрика Смита на использование psutil
хорошо работает для меня в Windows, но в OS X я предпочитаю это:
from os import listdir
listdir('/Volumes')
Это возвращает вам человекочитаемые имена, которые, по крайней мере, в моем случае, были бы предпочтительнее (IE, он дает вам Macintosh HD
вместо /
или /dev/disk0s2
.)
Ответ 4
Я не вижу способа в psutil включить сетевые подключения в Windows. То есть, \foobar\home сопоставлен с X :, но X: не отображается в списке, возвращаемом функцией psutil.disk_partitions() (локальные диски есть).