Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用Python3和Udisks2以只读方式安装设备?_Python 3.x_Glib_Udisks - Fatal编程技术网

Python 3.x 如何使用Python3和Udisks2以只读方式安装设备?

Python 3.x 如何使用Python3和Udisks2以只读方式安装设备?,python-3.x,glib,udisks,Python 3.x,Glib,Udisks,我需要使用Python3和UDisks2API临时挂载一个只读设备。正确的GLib.变体是什么 我创建了下面的脚本,用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

我需要使用Python3和UDisks2API临时挂载一个只读设备。正确的GLib.变体是什么

我创建了下面的脚本,用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))
这将安装设备,但它不是只读安装的

我希望它以只读方式挂载设备,或者如果只读选项无效,至少抛出一个错误。

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


请参阅。

尝试GLib.Variant'a{sv}',{'options':GLib.Variant's','ro}。就是这样!我一直在寻找关于如何在Udisks2上使用Glib.Variant的文档,但没有找到任何东西。现在知道如何以这种方式使用选项,您可以使用任何其他可用选项。谢谢酷,谢谢你的测试。我把这写下来作为一个恰当的回答。