基于pyinotfy,通过删除未使用的类来简化模块,并添加新的有用函数来实现回调

Yinotif的Python项目详细描述


Build_StatusCoverage_Status

概述

yinotify帮助用户创建在Linux内核检测到监视器事件时触发的回调函数。用户可以使用指定的操作在事件中注册监视和Bing的目录。内部类yivent可以帮助收集基于已注册事件的统计信息和状态。轮询一个或多个目录以确定是否有任何更改的是Linux内核接口,它帮助我们从应用程序级别控制更多内容

该项目基于inotify,并删除了一些未使用的函数和类

安装

通过pip安装:

$ sudo pip install Yinotify

示例

简单用法:

exp1:
    def printEvent():
        print("Action triggered!!")

    yiSample = Yinotify.fEvent(_target_folder,"IN_ISDIR",printEvent)

exp2:
    def printEvent(arg):
        print("Action triggered!!",arg)

    yiSample = Yinotify.fEvent(_target_folder,"IN_ISDIR",printEvent,action_args=("arg1",))

单元测试

pytest示例:

def printEvent(timeSlot,case):
    global result
    duration = time.time() - timeSlot
    print("%s:::Action1 triggered!!"%(duration))
    result[case] = True
    return

def printEvent2(case):
    global result
    print("Action2 triggered!!")
    result[case] = True
    return

def printEvent3():
    global result
    print("Action3 triggered!!")
    result["test_events_IN_MOVED"] = True
    return


def test_events_IN_ISDIR():
    result["test_events_IN_ISDIR"] = False
    test1 = Yinotify.Yivent(folder,"IN_ISDIR",printEvent2,action_args=("test_events_IN_ISDIR",))
    cmd = "ls %s/" % (folder)
    print("test_events_IN_ISDIR::"+cmd)
    os.popen(cmd)
    n = 0
    while n < 2:
        time.sleep(1)
        n += 1
    del test1
    assert result["test_events_IN_ISDIR"] == True
    print("--------------------------------------------------------")

def test_events_IN_OPEN():
    result["test_events_IN_OPEN"] = False
    timeSlot = time.time()
    test2 = Yinotify.Yivent(folder,"IN_OPEN",printEvent,action_args=(timeSlot,"test_events_IN_OPEN"))
    cmd = "touch %s/Yijun2" % (folder)
    print("test_events_IN_OPEN::"+cmd)
    os.popen(cmd)
    n = 0
    while n < 2:
        time.sleep(1)
        n += 1
    del test2

    assert result["test_events_IN_OPEN"] == True
    print("--------------------------------------------------------")


def test_events_IN_MOVED():
    result["test_events_IN_MOVED"] = False
    test3 = Yinotify.Yivent(folder,"IN_MOVED_FROM,IN_MOVED_TO",printEvent3)
    cmd = "mv %s/Yijun2 %s/Yijun22" % (folder,folder)
    print("test_events_IN_MOVED::"+cmd)
    os.popen(cmd)
    n = 0
    while n < 2:
        time.sleep(1)
        n += 1
    del test3
    assert result["test_events_IN_MOVED"] == True
    print("--------------------------------------------------------")



def test_events_IN_CREATE():
    result["test_events_IN_CREATE"] = False
    timeSlot = time.time()
    test4 = Yinotify.Yivent(folder,"IN_CREATE",printEvent,action_args=(timeSlot,"test_events_IN_CREATE"))
    os.mkdir(folder+'/Yijun3')
    print("test_events_IN_CREATE::os.mkdir(folder+'/Yijun3')")

    n = 0
    while n < 2:
        time.sleep(1)
        n += 1
    del test4

    assert result["test_events_IN_CREATE"] == True
    print("--------------------------------------------------------")

def test_events_IN_DELETE():
    result["test_events_IN_DELETE"] = False
    timeSlot = time.time()
    test5 = Yinotify.Yivent(folder,"IN_DELETE",printEvent,action_args=(timeSlot,"test_events_IN_DELETE"))
    os.remove(folder+"/Yijun22")
    os.rmdir(folder+"/Yijun3")
    print("test_events_IN_DELETE::os.remove(folder+'/Yijun2')")

    n = 0
    while n < 2:
        time.sleep(1)
        n += 1
    del test5

    assert result["test_events_IN_DELETE"] == True
    print("--------------------------------------------------------")

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

推荐PyPI第三方库


热门话题
hbm中的java异常。xml   java如何扩展JavaDoc5.0标准doclet?   java将所有非字母数字更改为+   java如何使用JSP从URL获取参数   把java学校的程序员变成C或C++程序员有多难?   java使用HTML获取表内容   java在JPanel中使用repaint()方法而不删除已绘制的内容   rest如何在Java中动态映射同一父类的子对象列表   如果协议不是http或https,java如何解析URL?   java删除文本时如何在eclipse中隐藏建议框?   java代码名1 GPS跟踪器   java寻找骑士所有独特的可能动作   从一个管道到另一个进程的java InputStream仍然被阻塞   java在阶段后将子项添加到窗格。show()   java如何确保在子对象中调用超级方法?   java从json对象获取值   java使用多线程读取文件   java Struts 1.1+Hibernate 3.2集成