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

标签 python audio ubuntu-14.04 codec python-watchdog

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

我已经使用看门狗库编写了一个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()

最佳答案

我相信这是行不通的,因为看门狗无法监视系统文件的更改。我不确定这是否100%正确,但这就是我在IRC,Reddit等平台上询问的结果。

关于python - 看门狗-on_modified事件不会在编解码器文件更改时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35670696/

相关文章:

amazon-web-services - 在 ec2 上远程运行命令

python - 如何在 Flask 中实现 MIXIN?

python - 将字典 append 到循环中的列表

javascript - MIDI.js 音符持续时间不会改变

c++ - 项目错误 : Unknown module(s) in QT: winextras

ubuntu - 现在为 haskell vim 安装更新的 cabal 版本的问题

python - Django - Url 模式正则表达式不匹配带重音的字符串参数

python - Django objects.count() 在默认方法参数中返回 0

iphone - 通过蓝牙播放时AVAudioPlayer不流畅

javascript - 如何在使用 navigator.mediaDevices.getUserMedia 录制音频时修复广泛的回声?