To lock file for testing use this command
The below command will lock /home/ubuntu/fileloc
flock -x -w 5 /home/ubuntu/fileloc echo "4" > /home/ubuntu/fileloc && sleep 5
test.py
------------------------
import os, time
import datetime as dt
def is_locked(filepath):
locked = None
file_object = None
if os.path.exists(filepath):
try:
print "Trying to open %s." % filepath
buffer_size = 8
# Opening file in append mode and read the first 8 characters.
file_object = open(filepath, 'a', buffer_size)
if file_object:
print "%s is not locked." % filepath
locked = False
except IOError, message:
print "File is locked (unable to open in append mode). %s." % \
message
locked = True
finally:
if file_object:
file_object.close()
print "%s closed." % filepath
else:
print "%s not found." % filepath
return locked
def wait_for_files(filepaths):
for filepath in filepaths:
if is_locked(filepath):
print "%s is currently in use." % \
(filepath)
st = os.stat(filepath)
mtime = dt.datetime.fromtimestamp(st. st_mtime)
print('%s modified %s'%(filepath, mtime))
# Test
if __name__ == '__main__':
files = [r"/home/ubuntu/filelock"]
print wait_for_files(files)
-------------------------
python test.py