小虾米TC 发表于 2016-12-22 11:35:55

文件监视问题

文件监视,能不能获取到具体变化的内容?
例如:文件夹有5个文本,其中一个文本中被添加了“今天天气很好”。有没什么办法利用文件夹监视,并取出“今天天气很好”新增的内容

守护者 发表于 2016-12-23 13:45:49

import threading
import win32file
import win32con
import os
dirs_to_monitor = []
while True:
    site=raw_input("Please inpue Monirot Site:")
    # site.strip("\r").strip("\n")
    if site=="ok":
      break
    dirs_to_monitor.append(site)
FILE_CREATED      = 1
FILE_DELETED      = 2
FILE_MIDIFIED   = 3
FILR_RENAMED_FROM = 4
FILE_RENAMED_TO   = 5


def start_monitor(path_to_watch):
    FILE_LIST_DIRECTORY = 0x0001
    h_directory =win32file.CreateFile(
      path_to_watch,
      FILE_LIST_DIRECTORY,
      win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE | win32con.FILE_SHARE_DELETE,
      None,
      win32con.OPEN_EXISTING,
      win32con.FILE_FLAG_BACKUP_SEMANTICS,
      None
    )
    while True:
      try:
            result = win32file.ReadDirectoryChangesW(
                h_directory,
                1024,
                True,
                win32con.FILE_NOTIFY_CHANGE_FILE_NAME |
                win32con.FILE_NOTIFY_CHANGE_DIR_NAME |
                win32con.FILE_NOTIFY_CHANGE_ATTRIBUTES |
                win32con.FILE_NOTIFY_CHANGE_SIZE |
                win32con.FILE_NOTIFY_CHANGE_LAST_WRITE |
                win32con.FILE_NOTIFY_CHANGE_SECURITY,
                None,
                None
            )
            for action,filename in result:
                full_filrname=os.path.join(path_to_watch,filename)
                if action ==FILE_CREATED:
                  print "[ + ] Created %s" % full_filrname
                elif action ==FILE_DELETED:
                  print "[ - ] Delete %s" % full_filrname
                elif action==FILE_MIDIFIED:
                  print "[ * ] Modified %s" %full_filrname
                  print " Dumping contents..."
                  try:
                        f=open(full_filrname,"rb")
                        contends= f.read()
                        f.close()
                        print contends
                        print "[^^^] Dump Complete."
                  except:
                        print "[!!!] Failed."
                elif action==FILR_RENAMED_FROM:
                  print "[ > ] Renamed from: %s" %full_filrname
                elif action==FILE_RENAMED_TO:
                  print "[ < ] Rename to: %s" %full_filrname
                else:
                  print "[???] Unknown: %s" %full_filrname
      except:
            pass

for path in dirs_to_monitor:
    montor_thread = threading.Thread(target=start_monitor,args=(path,))
    print "Start Site Monitor Site:%s" % path
    montor_thread.start()



python脚本一个,通过改第五十七行到第五十九行的内容可以实现要求,还有就是,依赖的库记得装

守护者 发表于 2016-12-23 13:53:20

本帖最后由 守护者 于 2016-12-23 14:05 编辑

传个附件吧,自己写的小玩意,一个是进程的监控,监控结果会写到tasklist.txt里
还有一个是文件监控的,文件发生变化之后就会在当前目录新建一个dump什么玩意的文件夹,然后把文件拷贝到这个目录,前面会加日期
这个文件监控双击之后要求输入监控路径,路径可以有很多,输入一个然后就回车一下,不输入直接回车就开始监控了,自己研究吧









完了,我好像说错什么了,楼主这个要求需要创建快照才行吧,,毕竟最开始不知道文件的内容




小虾米TC 发表于 2016-12-24 13:56:24

守护者 发表于 2016-12-23 13:53
传个附件吧,自己写的小玩意,一个是进程的监控,监控结果会写到tasklist.txt里
还有一个是文件监控的,文 ...

谢谢指点,我再研究研究
页: [1]
查看完整版本: 文件监视问题