gpt4 book ai didi

python - 在 linux 上用 python 将文件写入 usb

转载 作者:太空狗 更新时间:2023-10-30 01:29:59 34 4
gpt4 key购买 nike

如果问题如此愚蠢,我深表歉意,但我是 linux 和 python 的新手。关键是我需要编写一个 python 脚本来检测连接的 USB 内存棒并向其写入文件。我使用 opensuse(但脚本应该适用于任何 linux 发行版。在理想情况下)。当前版本可以检测 usb 并在挂载 usb 时写入文件。但是在我的机器上,只有当我在文件管理器中浏览它时,usb 才会被挂载。直到该 USB 被检测为分区但没有挂载点。那么,我如何强制系统挂载 usb,或者我如何使用 devname 或 devpath 或我可以从 hal 管理器获得的其他信息编写文件。我不能使用“mount”命令,因为它需要 root 权限

简化的源代码:

import dbus, gobject, os

class DeviceAddedListener:
def __init__(self):
self.bus = dbus.SystemBus()
self.hal_manager_obj = self.bus.get_object( "org.freedesktop.Hal", "/org/freedesktop/Hal/Manager")
self.hal_manager = dbus.Interface(self.hal_manager_obj, "org.freedesktop.Hal.Manager")
self.hal_manager.connect_to_signal("DeviceAdded", self.added)

def show(self, name, udi):
d_object = self.bus.get_object('org.freedesktop.Hal', udi)
d_interface = dbus.Interface(d_object,'org.freedesktop.Hal.Device')

if d_interface.QueryCapability("volume"):
print name
props = [ "block.device", "volume.label", "volume.is_mounted", "volume.mount_point", "volume.size"]
for p in props:
print '\t', p, " = ",
try:
print d_interface.GetProperty(p)
except:
print "Fail"

def added(self, udi):
self.show("DeviceAdded", udi)
self.bus.add_signal_receiver(self.property_modified,
"PropertyModified",
"org.freedesktop.Hal.Device",
"org.freedesktop.Hal",
udi,
path_keyword = "sending_device" )

def property_modified(self, numupdates, updates, sending_device = None):
self.show("PropertyModified", sending_device)



if __name__ == '__main__':
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
loop = gobject.MainLoop()
DeviceAddedListener()
print "running"
loop.run()

usb插入时的输出

DeviceAdded
block.device = /dev/sdb1
volume.label = @
volume.is_mounted = 0
volume.mount_point =
volume.size = 4009722368

usb插入并挂载时的输出

    block.device  =  /dev/sdb1
volume.label = @
volume.is_mounted = 1
volume.mount_point = /media/@
volume.size = 4009722368

感谢您的帮助!

最佳答案

您必须使用mount,因为内核出于安全原因控制操作系统内的挂载分区。您可以在没有 super 用户/管理员权限的情况下使用 mount。尝试这样的事情:

确保你挂载的目录(/mnt/usb1/)已经存在,然后

mount /dev/sdb1 /mnt/usb1 -o noauto,users,rw,umask=0

还有一个叫做 autofs 的东西允许自动挂载:

http://linuxconfig.org/automatically-mount-usb-external-drive-with-autofs

关于python - 在 linux 上用 python 将文件写入 usb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11227943/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com