Быстрый и грязный пример с использованием кода из проекта pyinotify [http://github.com/seb-m/pyinotify]
Вам нужно будет изменить WATCHED_DIR на ваш каталог, содержащий файлы ODT. Также не забудьте сначала установить unoconv.
# Notifier example from tutorial
#
# See: http://github.com/seb-m/pyinotify/wiki/Tutorial
#
# odtwatcher.py
import os
import pyinotify
import subprocess
WATCHED_DIR = '/tmp/test'
wm = pyinotify.WatchManager() # Watch Manager
mask = pyinotify.IN_MODIFY
class EventHandler(pyinotify.ProcessEvent):
def process_IN_MODIFY(self, event):
fname = event.pathname
if os.path.splitext(fname)[1] == '.odt':
print 'MODIFIED: ', fname
args = ['unoconv', '-f', 'pdf', fname]
try:
subprocess.Popen(args)
except OSError as e:
print 'Could not convert file %s to PDF. Error %s' % (fname, str(e))
if __name__ == '__main__':
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(WATCHED_DIR, mask, rec=True)
notifier.loop()
Сохраните это как odtwatcher.py, а затем запустите его в фоновом режиме
python odtwatcher.py &