[Python] Windows下python监控程序 →→→→→进入此内容的聊天室

来自 , 2019-06-27, 写在 Python, 查看 99 次.
URL http://www.code666.cn/view/037a595e
  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3.  
  4. """
  5. MonitorLog.py
  6.  
  7. Usage: MonitorLog.py ...
  8. Monitor the log file
  9.  
  10. -f  log file
  11. -h  help info
  12.  
  13. python MonitorLog.py -f C:\monitor.log
  14.  
  15. Created by zhoubo on 2011-08-29.
  16. """
  17.  
  18. import sys
  19. import os
  20. import getopt
  21. import subprocess
  22. import time
  23. import codecs
  24. import winsound
  25.  
  26. ABSPATH = os.path.dirname(os.path.abspath(__file__))
  27. MONITERCONF = 'moniter_keyword.txt' #utf8 file
  28.  
  29. def main():
  30.     try:
  31.         opts, args = getopt.getopt(sys.argv[1:], 'hf:')
  32.     except getopt.GetoptError, err:
  33.         print str(err)
  34.         print __doc__
  35.         return 1
  36.  
  37.     path = ''
  38.     for k, v in opts:
  39.         if k == '-f':
  40.             path = v
  41.         elif k == '-h':
  42.             print __doc__
  43.             return 0
  44.  
  45.     if not (path and os.path.exists(path)):
  46.         print 'Invalid path: %s' % path
  47.         print __doc__
  48.         return 2
  49.  
  50.     #命令行元组
  51.     cmd = ('tail', '-f', path)
  52.     print ' '.join(cmd)
  53.     output = subprocess.Popen(cmd, stdout=subprocess.PIPE)
  54.  
  55.     keywordMap = {}
  56.     #加载监控的关键字信息
  57.     with codecs.open(os.path.join(ABSPATH, MONITERCONF), 'r', 'utf8') as f:
  58.         lines = f.readlines()
  59.     for line in lines:
  60.         line = line.strip()
  61.         if not line:
  62.             continue
  63.         keyword, wav = line.strip().split(':')
  64.         keywordMap[keyword] = wav
  65.  
  66.     while True:
  67.         line = output.stdout.readline()
  68.         #process code,得到输出信息后的处理代码
  69.         if not line:
  70.             time.sleep(0.01)
  71.             continue
  72.         line = line.strip().decode('utf8')
  73.         print line
  74.         for keyword in keywordMap:
  75.             if line.find(keyword) > -1:
  76.                 winsound.PlaySound(keywordMap[keyword],
  77.                                    winsound.SND_NODEFAULT)
  78.         #time.sleep(0.01)
  79.     return 0
  80.  
  81. if __name__ == '__main__':
  82.     sys.exit(main())
  83. #//python/4306

回复 "Windows下python监控程序"

这儿你可以回复上面这条便签

captcha