在linux上用python将文件写入usb
发布时间:2020-12-14 02:12:37 所属栏目:Linux 来源:网络整理
导读:如果问题是如此愚蠢,我很抱歉,但我是 linux和 python的新手. 关键是我需要编写一个python脚本来检测连接的usb棒并将文件写入其中.我使用的是opensuse(但是在任何 Linux发行版中,脚本都可以使用.)在理想情况下.如果安装了usb,当前版本可以检测usb并写入文件.
如果问题是如此愚蠢,我很抱歉,但我是
linux和
python的新手.
关键是我需要编写一个python脚本来检测连接的usb棒并将文件写入其中.我使用的是opensuse(但是在任何 Linux发行版中,脚本都可以使用.)在理想情况下.如果安装了usb,当前版本可以检测usb并写入文件.但是在我的机器上只有在文件管理器中浏览它时才会安装usb.直到那个usb被检测为分离但没有挂载点.那么,我如何强制系统挂载usb或者如何使用devname或devpath或其他信息来编写一个文件,我可以从hal manager获取.我不能使用“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,因为出于安全原因,内核控制操作系统中的安装分区.您可以使用没有超级用户/管理员权限的安装.尝试这样的事情:
确保您要挂载的目录(/ mnt / usb1 /)已存在,然后 mount /dev/sdb1 /mnt/usb1 -o noauto,users,rw,umask=0 还有一种称为autofs的东西允许自动安装: http://linuxconfig.org/automatically-mount-usb-external-drive-with-autofs (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |