使用python如何检查模块是否已加载?

用户名

我目前正在从事一个项目,该项目涉及运行ubilinux的Up-board,该ubilinux连接到三个USB设备。我们目睹了主板发现USB设备断开连接的问题。当USB设备重新连接时,它将加载USBSerial和FTDI_sio模块,这是一个问题。在程序可以检查是否存在连接的设备之前,我需要运行

sudo /sbin/rmmod usbserial
sudo /sbin/rmmod ftdi_sio

我不希望程序不断执行这些操作,所以我要做的是创建一个线程,寻找要插入的USB设备。我正在使用pyudev来完成此操作。

我的问题是,我不必总是为usbserial和ftdi_sio执行rmmod,因为在连接USB设备时它们并不总是加载。有什么方法可以运行以python编写的检查,以确定是否已加载ftdi_sio和usbserial?

我已经进行了许多搜索,并且找到了许多链接,这些链接显示了如何作为bash脚本来执行此操作,但是我试图找出是否可以在python中执行此操作。加载python模块时,我似乎也获得了大量搜索结果,这并不是很有帮助。

Wholevinski

这是一些Popen代码,以检查是否使用加载了它lsmod

import subprocess

def module_loaded(module_name):
    """Checks if module is loaded"""
    lsmod_proc = subprocess.Popen(['lsmod'], stdout=subprocess.PIPE)
    grep_proc = subprocess.Popen(['grep', module_name], stdin=lsmod_proc.stdout)
    grep_proc.communicate()  # Block until finished
    return grep_proc.returncode == 0


for module_name in ['usbserial', 'ftdi_sio']:
    loaded = module_loaded(module_name)
    print('Module {} {} loaded'.format(module_name, "is" if loaded else "isn't"))

那里的印刷品只是为了证明它有效;您可以将其替换为您的rmmod代码。输出:

Module usbserial isn't loaded
ftdi_sio               52791  0 
Module ftdi_sio is loaded

modinfo从btw开始,但是那没有按预期进行。modinfo无论是否加载模块,都会显示模块信息。lsmod方法似乎效果很好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查是否已导入python模块?

如何检查是否已加载jQuery插件?

如何使用python检查是否已安装Maven

如何检查场景是否已加载不要再次加载?

如何检查Perl模块是否已安装在系统中

如何使用Google Doubleclick API检查特定的广告位是否已加载?

可能知道python模块是否已重新加载?

检查元素是否已加载

Python:如何检查链表是否已排序

Python如何检查值是否已更改

在Javascript中如何检查是否已加载类?

如何检查CI3是否已加载默认配置?

如何检查Google Maps API是否已加载?

如何检查Twitter引导程序是否已加载?

如何检查karma是否已加载src文件或规范?

如何检查ajax .load调用是否已加载

如何检查引导加载程序是否已解锁

HtmlUnit,如何检查每个资产是否已加载?

如何检查Laravel刀片组件是否已加载?

使用document.styleSheets检查是否已加载css文件

检查是否使用jasmine-node加载了节点模块

在Python 3中的已加载模块中使用数学

如何检查python xarray Dataset / DataArray对象是否已加载到内存中,还是仍然指向磁盘上的数据?

如何检查位置是否已更改且控制器已加载

如何正确检查是否已安装模块,以及是否未尝试安装它

如何使用Python检查我的服务器是否已启动并正在运行?

如何使用 Firebase 和 Python 检查数据库中是否已存在密钥?

如何使用Python检查CSV文件中是否已存在数据

如何检查自动加载是否只加载使用过的类?