Después de de esta larga recopilación de datos dimos con la respuesta esta cuestión que tienen ciertos usuarios. Te ofrecemos la solución y nuestro objetivo es resultarte de mucha ayuda.
Solución:
Abres el mismo archivo pero los asignas a diferentes variables. Lo que debes hacer es:
fileobj=open(filename,"wb+")
if not fileobj.closed:
print("file is already opened")`
Estoy escribiendo con mi teléfono, por lo que el estilo puede no ser bueno, pero entenderá el punto. por cierto el .closed
solo verifica si el archivo ha sido abierto por el mismo proceso de python.
Yo sugeriría usar algo como esto
# Only works on Windows
def is_open(file_name):
if os.path.exists(file_name):
try:
os.rename(file_name, file_name) #can't rename an open file so an error will be thrown
return False
except:
return True
raise NameError
Editado para adaptarse a los problemas específicos del OP
class FileObject(object):
def __init__(self, file_name):
self.file_name = file_name
self.__file = None
self.__locked = False
@property
def file(self):
return self.__file
@property
def locked(self):
return self.__locked
def open(self, mode, lock=True):#any testing on file should go before the if statement such as os.path.exists()
#replace mode with *args if you want to pass multiple modes
if not self.locked:
self.__locked = lock
self.__file = open(self.file_name, mode)
return self.file
else:
print 'Cannot open file because it has an exclusive lock placed on it'
return None #do whatever you want to do if the file is already open here
def close(self):
if self.file != None:
self.__file.close()
self.__file = None
self.__locked = False
def unlock(self):
if self.file != None:
self.__locked = False
Sección de Reseñas y Valoraciones
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)