¿Cuál es la forma correcta de acceder a los recursos en los programas de Python?Forma de acceder a los archivos de recursos en python
Básicamente en muchas de mis módulos de Python que terminan la escritura de código así:
DIRNAME = os.path.split(__file__)[0]
(...)
template_file = os.path.join(DIRNAME, "template.foo")
que está bien, pero:
- Se romperá si voy a comenzar a utilizar los paquetes de Python zip
- es código repetitivo
En Java que tenía una función que hizo exactamente lo mismo --- pero funcionaba tanto cuando el código estaba en un montón de carpetas como cuando estaba empaquetado en el archivo .jar
.
¿Existe tal función en Python, o hay algún otro patrón que pueda usar?
OK esta es una respuesta pitonica. get_data parece interesante, pero pkg_resources es intimidante, pero definitivamente lo investigaré cuando comience a usar distutils para empacar mi proyecto. –
Estoy buscando una solución similar. 'get_data' es genial, pero necesito obtener el objeto similar a un archivo para este archivo, no el contenido del archivo directamente. ¿Hay una manera elegante? – zegkljan
@zegkljan La forma más pitónica es envolverlo con BytesIO (StringIO en Py2): 'file_like = BytesIO (get_data (__ package__, 'filename.dat'))' – cincodenada