Abrir archivo en la aplicación Django

Quiero abrir un archivo desde una aplicación Django usando open() . El problema es que parece que open() usa cualquier directorio desde el que ejecute el comando runserver como root.

Por ejemplo, si ejecuto el servidor desde un directorio llamado foo como este

 $pwd /Users/foo $python myapp/manage.py runserver 

open() usa foo como el directorio raíz.

Si hago esto en su lugar

 $cd myapp $pwd /Users/foo/myapp $python manage.py runserver 

myapp será la raíz.

Digamos que mi estructura de carpetas se ve así

 foo/myapp/anotherapp 

Me gustaría poder abrir un archivo ubicado en foo/myapp/anotherapp desde un script también ubicado en foo/myapp/anotherapp simplemente diciendo

 file = open('./baz.txt') 

Ahora, dependiendo de dónde ejecuto el servidor, tengo que decir:

 file = open('./myapp/anotherapp/baz.txt') 

o

 file = open('./anotherapp/baz.txt') 

La solución se ha descrito en la pregunta Consejos y trucos favoritos de Django . La solución es la siguiente:

 import os module_dir = os.path.dirname(__file__) # get current directory file_path = os.path.join(module_dir, 'baz.txt') 

Lo que hace exactamente lo que mencionaste.

PD. Por favor, no sobrescriba file variable de file , es uno de los elementos incorporados .

Creo que encontré la respuesta en otra pregunta de desbordamiento de stack (sí, busqué antes de preguntar …)

Ahora hago esto

 pwd = os.path.dirname(__file__) file = open(pwd + '/baz.txt')