Is there any python functions such as:
filename = "a.txt"
if is_open(filename) and open_status(filename)=='w':
print filename," is open for writing"
Is there any python functions such as:
filename = "a.txt"
if is_open(filename) and open_status(filename)=='w':
print filename," is open for writing"
This is not quite what you want, since it just tests whether a given file is write-able. But in case it's helpful:
import os
filename = "a.txt"
if not os.access(filename, os.W_OK):
print "Write access not permitted on %s" % filename
(I'm not aware of any platform-independent way to do what you ask)
Here is an is_open solution for windows using ctypes:
from ctypes import cdll
_sopen = cdll.msvcrt._sopen
_close = cdll.msvcrt._close
_SH_DENYRW = 0x10
def is_open(filename):
if not os.access(filename, os.F_OK):
return False # file doesn't exist
h = _sopen(filename, 0, _SH_DENYRW, 0)
if h == 3:
_close(h)
return False # file is not opened by anyone else
return True # file is already open
I think the best way to do that is to try.
def is_already_opened_in_write_mode(filename)
if os.path.exists(filename):
try:
f = open(filename, 'a')
f.close()
except IOError:
return True
return False
There is a attribute to check the open status or mode of a file.
filename = open('open.txt','r')
print(filename.mode)
Python has an inbuilt attribute called 'mode'. Above code will return 'r'. Similarly if you open a file in 'w' mode above code will return 'w'
You can also check if a file is open or closed
print(filename.closed)
This will return 'FALSE' as the file is in open state.
filename.closed
print(filename.closed)
This will return 'TRUE' because the file is now in close state.
Thank you
I don't think there is an easy way to do what you want, but a start could be to redefine open() and add your own managing code. That said, why do you want to do that?