I wanted to update with a solution for an obstacle I ran into when trying to open files identified by this watcher. I saw the following regardless of using WatchService.take() or WatchService.poll().
- File paths are reliably collected and always immediately verifiable with 
os.path(path)returningTrue - Upon immediate inspection after a WatchService notification, some files return 
FalsefromFiles.isReadable(path)and will throwIOError[2] No such fileif opened - After a short delay (i.e. 3 seconds) these files can be opened
 
I used this check to ensure every new file is eventually opened:
import os
from java.nio.file import Files, Paths
from time import sleep
pathCheck = os.path.isfile(path)
readCheck = Files.isReadable(Paths.get(path))
target = None
if pathCheck & readCheck:
	target = open(path, 'rb')
else:
	for i in range(5):
		sleep(3)
		try:
			target = open(path, 'rb')
			break
		except IOError, e:
			if e.errno == 2:
				pass
			else:
				raise