es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mantener los archivos FITS accesibles después de cerrar el administrador de contexto.

Estoy abriendo archivos fits alojados en un repositorio con astropy.io.fits (formato de archivo fits), así:

for url in self.urllist:
    with fits.open(url) as f:
        l.info(f"Loading file at {url}")
        self.hdu_cal.append(f[1])

Básicamente, me gustaría tener algunos de ellos en memoria. Sin embargo, los datos se vuelven inaccesibles una vez que salgo del administrador de contexto, ya que el archivo se cierra.

¿Hay alguna manera de hacer una copia y asegurarme de mantener los datos en memoria?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes hacer una copia de los datos y almacenarla en la memoria fuera del bloque with. Un enfoque es utilizar el método copy() para crear una copia profunda de los datos. Por ejemplo:

    import copy
    
    data_list = []
    
    for url in self.urllist:
        with fits.open(url) as f:
            l.info(f"Cargando archivo en {url}")
            hdu = f[1]
            hdu_copy = copy.deepcopy(hdu)  # hacer una copia profunda
            data_list.append(hdu_copy)
    

    En este ejemplo, cada objeto hdu_copy es una copia separada de los datos devueltos por f[1]. Estas copias persistirán en la memoria después de que el bloque with termine, por lo que podrás acceder a ellas más adelante según sea necesario.

Comments are closed.