我想使用open()
从Django应用中打开一个文件。问题是open()
似乎使用我以runserver
命令运行根目录的任何目录。
E.g。如果我从像这样的名为foo的目录中运行服务器
$pwd
/Users/foo
$python myapp/manage.py runserver
open()
使用foo
作为根目录。
如果我改为
$cd myapp
$pwd
/Users/foo/myapp
$python manage.py runserver
myapp
将成为根。
假设我的文件夹结构如下所示
foo/myapp/anotherapp
我希望能够通过位于foo/myapp/anotherapp
的脚本打开位于foo/myapp/anotherapp
的文件,只需说出
file = open('./baz.txt')
现在,根据我运行服务器的位置,我不得不说
file = open('./myapp/anotherapp/baz.txt')
或
file = open('./anotherapp/baz.txt')
答案 0 :(得分:35)
Favorite Django Tips&Tricks问题中描述了解决方案。解决方案如下:
import os
module_dir = os.path.dirname(__file__) # get current directory
file_path = os.path.join(module_dir, 'baz.txt')
你提到的正是如此。
聚苯乙烯。请不要覆盖file
变量,它是one of the builtins。
答案 1 :(得分:1)
我想我通过另一个堆栈溢出问题找到了答案(是的,我在询问之前进行了搜索...)
我现在这样做
pwd = os.path.dirname(__file__)
file = open(pwd + '/baz.txt')