pythonincron

python readlines not working during incron


I'm trying to call a python script through incron:

/data/alucard-ops/drop IN_CLOSE_WRITE /data/alucard-ops/util/test.py $@/$#

but I cant seem to read from the file passed. Here is the script:

#!/usr/bin/env /usr/bin/python3
import os,sys
logfile = '/data/alucard-ops/log/'
log = open(logfile + 'test.log', 'a')
log.write(sys.argv[1] + "\n")
log.write(str(os.path.exists(sys.argv[1])) + "\n")
datafile = open(sys.argv[1], 'r')
log.write('Open\n')
data = datafile.readlines()
log.write("read\n")
datafile.close()

The output generated by the script:

/data/alucard-ops/drop/nsco-20180219.csv
True
Open

It seems to stop at the readlines() call. I dont see any errors in the syslog.

Update: It seems that i can use a subprocess to cat the file and it retrieves the contents. But, when i decode it, data.decode('utf-8') I'm back to nothing in the variable.


Solution

  • I ended up using watchdog instead.