Я пытаюсь обнаружить все USB-накопители на моем Raspberry Pi в Python. И мне нужны все места их установки. Я проверил APi, но не могу найти, как выбрать точку монтирования для устройств.
bus = dbus.SystemBus()
ud_manager_obj = bus.get_object("org.freedesktop.UDisks", "/org/freedesktop/UDisks")
ud_manager = dbus.Interface(ud_manager_obj, 'org.freedesktop.UDisks')
output=[]
for dev in ud_manager.EnumerateDevices():
device_obj = bus.get_object("org.freedesktop.UDisks", dev)
device_props = dbus.Interface(device_obj, dbus.PROPERTIES_IFACE)
if device_props.Get('org.freedesktop.UDisks.Device', "DeviceIsRemovable"):
temp = []
**## HOW DO I GET THE MOUNTED ON I SEE IN df -h ?**
output.append(temp)
return output
Это то, что мне нужно:
Filesystem Size Used Avail Use% Mounted on
rootfs 2.6G 2.2G 313M 88% /
/dev/root 2.6G 2.2G 313M 88% /
devtmpfs 112M 0 112M 0% /dev
tmpfs 24M 228K 23M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sdb1 15G 581M 15G 4% **/media/usb0** <--- I need these
tmpfs 47M 0 47M 0% /run/shm
/dev/mmcblk0p1 56M 9.5M 47M 17% /boot
/dev/sda 3.8G 1.1M 3.8G 1% **/media/usb1** <--- I need these
Для каждого внешнего USB-устройства мне нужен массив со следующей информацией: [производитель, общий размер, читаемый человеком (ГБ), первый раздел точки монтирования, общий размер в КБ, доступный размер в КБ]
РЕДАКТИРОВАТЬ:
Я изменил свой код на это:
def USBDEVICES():
bus = dbus.SystemBus()
ud_manager_obj = bus.get_object("org.freedesktop.UDisks", "/org/freedesktop/UDisks")
ud_manager = dbus.Interface(ud_manager_obj, 'org.freedesktop.UDisks')
output=[]
for dev in ud_manager.EnumerateDevices():
device_obj = bus.get_object("org.freedesktop.UDisks", dev)
device_props = dbus.Interface(device_obj, dbus.PROPERTIES_IFACE)
if device_props.Get('org.freedesktop.UDisks.Device', "DeviceIsRemovable"):
temp = []
temp.append(str(device_props.Get('org.freedesktop.UDisks.Device', "DriveVendor")))
temp.append(str(math.ceil(device_props.Get('org.freedesktop.UDisks.Device', "PartitionSize")/1048576.0)/1000)+' GB')
temp.append(device_props.Get('org.freedesktop.UDisks.Device', "DeviceIsMounted"))
temp.append(device_props.Get('org.freedesktop.UDisks.Device','DeviceMountPaths'))
output.append(temp)
print output
Я надеялся получить этот вывод:
[['TDKMedia', '15,255 ГБ', True,'/media/usb0'],['Sony', '3,812 ГБ', True,'/media/usb1']
Но вместо этого я получил это:
[['TDKMedia', '15,255 ГБ', dbus.Boolean(False, variant_level=1), dbus.Array([], подпись=dbus.Signature('s'), variant_level=1)], ['USB2. 0', '3,812 ГБ', dbus.Boolean(True, variant_level=1), dbus.Array([dbus.String(u'/media/usb1')], подпись=dbus.Signature('s'), variant_level =1)]]
Нет пути монтирования для USB-накопителя TDKMedia и что-то странное для другого USB-накопителя. Но когда я смотрю на df, он говорит, что TDK смонтирован... :/
Поскольку основной вопрос решен, я открыл новую тему для не смонтированной проблемы: https://stackoverflow.com/questions/24928984/python-dbus-acting-weird
mount
илиdf
? - person Salem   schedule 23.07.2014