看门狗 - on_modified事件不会触发编解码器文件更改

时间:2016-02-27 14:02:51

标签: python audio ubuntu-14.04 codec python-watchdog

我正在尝试编写一个程序来检测我是否已插入或拔下我的耳机并执行某些操作。我正在使用Ubuntu 14.04并通过一些搜索我发现耳机/耳机连接状态被写入此路径的编解码器文件 - / proc / asound / card0。包含状态信息的特定文件是编解码器#0.txt。

我使用Watchdog库编写了一个Python程序,并尝试将此编解码器#0文件输出与unplugged.txt的初始状态进行比较。根据文件是否匹配,我想启动一个音乐播放器。

现在代码如下;我无法弄清楚为什么每次我将耳机与插孔连接/断开时,on_modified事件都不会触发。我看到上述路径中所有文件的修改日期发生了变化,但我的程序没有打印出消息。

代码:

import time
import os
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import filecmp

unpluggedStateFile = 'unplugged.txt'


class HeadsetPluginHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print 'File changed.'
        # os.system('cat /proc/asound/card0/codec#0 > pluggedIn.txt')
        # print filecmp.cmp(unpluggedStateFile, 'pluggedIn.txt')


if __name__== "__main__":
    event_handler = HeadsetPluginHandler()
    observer = Observer()
    observer.schedule(event_handler, path='/proc/asound/card0',     recursive=False)
    observer.start()


    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
        print 'stopped'
    observer.join()

1 个答案:

答案 0 :(得分:-1)

我认为这不起作用,因为看门狗无法监控系统文件的变化。我不确定这是100%正确,但这是我在询问IRC,Reddit等时所得到的。