0

我需要(临时)使用 Python3 和 Udisks2 API 以只读方式安装设备。什么是正确的 GLib.Variant?

我创建了以下脚本以使用 USB 笔式驱动器进行测试。它假定 /dev/sdc1 作为这个设备。

#! /usr/bin/env python3

MYDEVICE = '/dev/sdc1'

import gi
gi.require_version('UDisks', '2.0')
from gi.repository import UDisks, GLib

read_only = GLib.Variant('a{sv}', {'read-only': GLib.Variant('b', True)})

client = UDisks.Client.new_sync(None)
manager = client.get_object_manager()
for obj in manager.get_objects():
    block = obj.get_block()
    if not block: continue
    device_path = block.get_cached_property("Device").get_bytestring().decode('utf-8')
    if device_path == MYDEVICE:
        fs = obj.get_filesystem()
        mount_points = fs.call_mount_sync(read_only, None)
        print((mount_points))

这将安装设备,但它不是以只读方式安装的。

我本来希望它以只读方式安装设备,或者如果只读选项无效,至少会引发错误。

4

1 回答 1

1

用于GLib.Variant('a{sv}', {'options': GLib.Variant('s', 'ro')})将标准ro选项传递给mount

请参阅Mount()udisks 的 D-Bus 接口的文档

于 2019-04-12T11:23:06.050 回答