Advertisement
Guest User

Untitled

a guest
Apr 21st, 2015
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3. import select
  4. import os
  5. import glob
  6.  
  7. def filename_and_path(filepath):
  8. fullpath = os.path.abspath(filepath)
  9. print("fullpath = ",fullpath)
  10. filename = os.path.basename(fullpath)
  11. return [os.path.basename(fullpath),os.path.dirname(fullpath)]
  12.  
  13. def checkFile(filename,dirpath):
  14. # 指定されたディレクトリのファイル一覧を取得する
  15. files=os.listdir(dirpath)
  16. for item in files:
  17. if os.path.basename(item) == filename:
  18. return True
  19. return False
  20.  
  21. def watchDir(filename,dirpath):
  22. # 指定されたディレクトリを監視
  23. print("dirpath =",dirpath)
  24. f = os.open(dirpath,os.O_RDONLY)
  25. kq = select.kqueue()
  26. ke = select.kevent(f, filter=select.KQ_FILTER_VNODE,
  27. flags=select.KQ_EV_ADD | select.KQ_EV_ENABLE | select.KQ_EV_CLEAR,
  28. fflags=select.KQ_NOTE_DELETE | select.KQ_NOTE_WRITE)
  29. events = kq.control([ke], 0, None)
  30. floop=True
  31. while floop:
  32. r_events = kq.control([ke], 1, None)
  33. for event in r_events:
  34. print (event)
  35. if event.fflags & select.KQ_NOTE_WRITE:
  36. print ("dir was updated!")
  37. # 対象のファイルが追加されたか確認
  38. if checkFile(filename,dirpath):
  39. floop=False
  40.  
  41. kq.close()
  42. os.close(f)
  43. print(dirpath+"/"+filename)
  44. watchFile(dirpath+"/"+filename)
  45.  
  46. def watchFile(filepath):
  47.  
  48. f = os.open("foo",os.O_RDONLY)
  49. kq = select.kqueue()
  50. ke = select.kevent(f, filter=select.KQ_FILTER_VNODE,
  51. flags=select.KQ_EV_ADD | select.KQ_EV_ENABLE | select.KQ_EV_CLEAR,
  52. fflags=select.KQ_NOTE_DELETE | select.KQ_NOTE_WRITE)
  53. events = kq.control([ke], 0, None)
  54. floop=True
  55. while floop:
  56. r_events = kq.control([ke], 1, None)
  57. for event in r_events:
  58. print (event)
  59. if event.fflags & select.KQ_NOTE_DELETE:
  60. print( "file was deleted!")
  61. floop=False
  62. elif event.fflags & select.KQ_NOTE_WRITE:
  63. print ("file was updated!")
  64.  
  65. kq.close()
  66. os.close(f)
  67. print("aaa")
  68.  
  69. # ディレクトリ監視に切り替え
  70. filename,dirpath = filename_and_path(filepath)
  71. watchDir(filename, dirpath)
  72.  
  73. watchFile("foo")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement