Ayúdame con un código que verifique si un archivo se abre y lo cierra. Intenté el siguiente código y no funciona. Solo necesito python para verificar si el archivo chat.xls está abierto y, si es verdadero, python debería cerrar chat.xls. Ayuda amablemente, esto es lo que probé

closeXl = r"C:\Users\R\Downloads\Chat.xls"
if not closeXl.closed:
    closeXl.close()

AttributeError: el objeto 'str' no tiene atributo 'cerrado'

0
Raghul 29 sep. 2019 a las 14:37

3 respuestas

La mejor respuesta

Su AttributeError parece decir que debe ejecutar .close () en el identificador de archivo en lugar de en la cadena de ruta.

closeXl = r"C:\Users\R\Downloads\Chat.xls"
file = open(closeX1)

if not file.closed:
    file.close()

En la mayoría de los casos, sería una mejor solución usar la instrucción with. Cierra el archivo automáticamente al final del bloque.

closeXl = r"C:\Users\R\Downloads\Chat.xls"
with open(closeX1) as file:
   pass  # your code here

Si desea verificar si un archivo está abierto de lectura-escritura desde otro proceso y, por lo tanto, está bloqueado, debe echar un vistazo a: https: //www.calazan .com / how-to-check-if-a-file-is-locked-in-python /

1
Frank 29 sep. 2019 a las 12:08

file_object.closed solo funciona para archivos que han sido abiertos por el mismo proceso de Python. En algún momento deberías haber hecho f = open(r"C:\Users\R\Downloads\Chat.xls") (si no lo has hecho, .closed no debería funcionar). Luego, puede verificar if not f.closed:.

0
stephen 29 sep. 2019 a las 11:53

Debe abrir el archivo antes de acceder al atributo closed

>>> f = open('1.txt')
>>> f
<open file '1.txt', mode 'r' at 0x10de8c6f0>
>>> f.closed
False
>>> f.close()
>>> f.closed
True
1
Hansraj Das 29 sep. 2019 a las 15:00
58154797