在Django应用程序中打开文件

时间:2012-03-14 22:27:33

标签: python django file directory

我想使用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')

2 个答案:

答案 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')