Saltar al contenido

comprobar si un archivo está abierto en Python

Solución:

Si todo lo que te importa es el proceso actual, una forma sencilla es utilizar el atributo de objeto de archivo “cerrado”

f = open('file.py')
if f.closed:
  print 'file is closed'

¡Esto no detectará si el archivo está abierto por otros procesos!

fuente: http://docs.python.org/2.4/lib/bltin-file-objects.html

Supongo que está escribiendo en el archivo, luego ciérrelo (para que el usuario pueda abrirlo en Excel) y luego, antes de volver a abrirlo para operaciones de adición / escritura, desea verificar que el archivo no esté todavía abrir en Excel?

Así es como puedes hacer eso:

while True:   # repeat until the try statement succeeds
    try:
        myfile = open("myfile.csv", "r+") # or "a+", whatever you need
        break                             # exit the loop
    except IOError:
        input("Could not open file! Please close Excel. Press Enter to retry.")
        # restart the loop

with myfile:
    do_stuff()

Ninguno de los otros ejemplos proporcionados funcionaría para mí cuando se trata de este problema específico con Excel en Windows 10. La única otra opción que se me ocurrió fue intentar cambiar el nombre del archivo o directorio que contiene el archivo temporalmente, luego cambiarle el nombre.

import os

try: 
    os.rename('file.xls', 'tempfile.xls')
    os.rename('tempfile.xls', 'file.xls')
except OSError:
    print('File is still open.')
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *