一个简单的包装。没有花哨的铃铛和口哨,只有一个带有cTypes的文字包装。只有127行代码!

inotify_simple的Python项目详细描述


inotify_simple是一个简单的python包装 inotify。不 花哨的铃铛和口哨,只是一个带有cTypes的文字包装。只有122 代码行!

inotify_init()被包装为一个类,它只不过是保持 生成的inotify文件描述符。提供了read()方法 它从文件描述符中读取可用数据并返回事件 用^{tt5}解包后作为namedtuple对象$ 模块。inotify_add_watch()inotify_rm_watch()被包装 不做任何更改,获取并返回监视描述符整数 调用代码应该能够跟踪自身,就像一个 使用c中的inotify。与python 2.7或python一起使用>;=3.2。

View on PyPIFork me on github| Read the docs

安装

要安装inotify_simple,请运行:

$ pip3 install inotify_simple

或从源安装:

$ python3 setup.py install

注意:如果在python<;3.4上,则需要后端口的enum34 module

inotify_simple是少量代码,不太可能更改太多 在将来,直到inotify本身或python改变,所以您还可以 只需复制并粘贴到您的项目中,以避免额外的依赖性 风险很低。

简介

外面有很多不起眼的Python包装。I found them all unsatisfactory。大多数都太高级了 对我来说,他们提供的便利实际上是有限的 一种是用作者想象之外的其他方式使用inotify。 其他是c扩展,需要为不同的平台编译 以及python版本,而不是使用cTypes的纯python模块。这个 一个是相当低级的,实际上只是做了inotify本身所做的事情 再也没有了。所以如果我写得对的话,希望它会一直存在 无需更改、重新编译或 注意我。

示例用法

importosfrominotify_simpleimportINotify,flagsos.mkdir('/tmp/inotify_test')inotify=INotify()watch_flags=flags.CREATE|flags.DELETE|flags.MODIFY|flags.DELETE_SELFwd=inotify.add_watch('/tmp/inotify_test',watch_flags)# Now create, delete and modify some files in the directory being monitored:os.chdir('/tmp/inotify_test')# CREATE event for a directory:os.system('mkdir foo')# CREATE event for a file:os.system('echo hello > test.txt')# MODIFY event for the file:os.system('echo world >> test.txt')# DELETE event for the fileos.system('rm test.txt')# DELETE event for the directoryos.system('rmdir foo')os.chdir('/tmp')# DELETE_SELF on the original directory. # Also generates an IGNORED event# indicating the watch was removed.os.system('rmdir inotify_test')# And see the corresponding events:foreventininotify.read():print(event)forflaginflags.from_mask(event.mask):print('    '+str(flag))

输出如下:

Event(wd=1, mask=1073742080, cookie=0, name=u'foo')
    flags.CREATE
    flags.ISDIR
Event(wd=1, mask=256, cookie=0, name=u'test.txt')
    flags.CREATE
Event(wd=1, mask=2, cookie=0, name=u'test.txt')
    flags.MODIFY
Event(wd=1, mask=512, cookie=0, name=u'test.txt')
    flags.DELETE
Event(wd=1, mask=1073742336, cookie=0, name=u'foo')
    flags.DELETE
    flags.ISDIR
Event(wd=1, mask=1024, cookie=0, name=u'')
    flags.DELETE_SELF
Event(wd=1, mask=32768, cookie=0, name=u'')
    flags.IGNORED

注意,这些标志,因为它们是用enum.IntEnum定义的, 打印为它们的名称,而不是它们的整数值。然而 它们仍然是整数,因此可以按位和或等 对于掩码等,flags.from_mask()方法按位和掩码 使用所有可能的标志并返回匹配项列表。这是给 方便且有助于调试正在发生的事件, 但性能关键代码通常应该按位屏蔽 为了不做不必要的检查,利益标志本身。

See here了解更多信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Kotlin应该为Java类中的合成属性进行反射   hadoop。pig脚本与java嵌入式pig:哪一个最快?   java要求用户在不关闭程序的情况下输入一个double而不是字符串   Raspberry PI和windows pc代码之间的java差异   使用maven的基于java Spring引导概要文件的WAR   Java中的内联数组定义   jsf如何在Tomcat上安装和使用CDI?   当数据来自mySQL时,在java的微调器中删除重复项   java如何定制Android ListView的每一行?   对于web应用程序,为什么java也被称为平台无关?   java如何获得排序hashmap中两个给定键之间的所有键值?   帮我把这个Java翻译成Scheme,让我脑子里的东西运转起来   java共享子域cookie   hibernate多Java列表删除   java队列可以用来交换链表的相邻节点吗?   java遇到错误:当我在安卓应用程序中单击主屏幕快捷方式时,找不到应用程序