Pregunta

Googled a mi manera por este problema, pero no encontré ninguna solución.Estoy ejecutando Python 3.3 con Eclipse y Pydev Plugin, y cuando ejecuto cualquier proyecto Python, obtengo el siguiente mensaje:

/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/update_checker.py:37: ResourceWarning: unclosed file <_io.BufferedReader name='/var/folders/x4/st67yr0x6qg7znh7sdfr94kh0000gn/T/update_checker_cache.pkl'>
  permacache = pickle.load(open(filename, 'rb'))

Estoy algo nuevo en Python, y no tengo idea de lo que esto significa.Quería preguntar antes de eliminar esto para asegurarme de que sea seguro eliminar.¿Qué significa esto?Llego que hay un archivo abierto ... pero ¿por qué me quejas de Python?Estoy usando la biblioteca PRAW, si eso hace alguna diferencia.

Actualización: Mi código es aquí en SourceForge , Pero no se encuentra de manera confiable con el error (probado en 2 computadoras diferentes).Una vez que surge el error, nunca se va.

¿Fue útil?

Solución

Este residente que admite que abrió un archivo, lo usó, pero luego se olvidó de cerrar el archivo.Python lo cierra para usted cuando se nota que el objeto de archivo está muerto, pero esto solo ocurre después de que haya transcurrido un tiempo desconocido.Por lo tanto, en versiones recientes, Python también imprime un resourableWarning cuando hace eso.Es una forma para que usted identifique rápidamente dónde están los archivos no cerrados, y cierre correctamente.Puede ser importante en algunas plataformas que no pueden tener más de n archivos que se abren al mismo tiempo (por ejemplo, por ejemplo, 1024).Además, específicamente en Windows, no puede realizar algunas operaciones con un archivo si aún está abierto (por ejemplo, eliminándolo).

En este caso, la línea en el archivo update_checker.py debe ser arreglado para decir:

with open(filename, 'rb') as f:   # will close() when we leave this block
    permacache = pickle.load(f)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top