Я использую монитор файлов для прослушивания изменений в файле с помощью монитора win32file. Этот ниже код отлично работает на окнах. Этот код не работает на mac osx. Любые предложения по созданию монитора файлов на Mac OSX.Мониторинг файлов в osx 10.8.2 с использованием python
thread1 = myThread(1, tempFileName, tempLocation,selectedFileName)
thread1.start();
class myThread (threading.Thread):
def __init__(self, threadID, fileName, directory, origin):
threading.Thread.__init__(self)
self.threadID = threadID
self.fileName = fileName
self.daemon = True
self.dir = directory
self.originalFile = origin
def run(self):
startMonitor(self.fileName, self.dir, self.originalFile)
def startMonitor(fileMonitoring,dirPath,originalFile):
hDir = win32file.CreateFile (
dirPath,
FILE_LIST_DIRECTORY,
win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE,
None,
win32con.OPEN_EXISTING,
win32con.FILE_FLAG_BACKUP_SEMANTICS,
None
)
readFlags = 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
# Wait for new data and call ProcessNewData for each new chunk that's written
while 1:
# Wait for a change to occur
results = win32file.ReadDirectoryChangesW (
hDir,
1024,
False,
readFlags,
None
)
# For each change, check to see if it's updating the file we're interested in
for action, file_M in results:
full_filename = os.path.join (dirPath, file_M)
#print file, ACTIONS.get (action, "Unknown")
if len(full_filename) == len(fileMonitoring) and action == 3:
if os.path.exists(originalFile):
encrypt_file(fileMonitoring,originalFile)
Я ценю ваше предложение. Когда файл открывается любым типом файла, он должен прослушивать изменения и вызывать функцию шифрования. Когда открытый файл закрыт, он должен вернуться из прослушивателя. Таким образом, мониторинг файлов постоянно активен при открытии файла. Я не могу найти это с помощью сторожевого пса. – user2877960