在Django应用程序中打开文件

Pau*_*ter 17 python directory django file

我想用Django应用程序打开一个文件open().问题是,open()似乎使用我运行runserver命令的任何目录作为根.

例如,如果我从这样一个名为foo的目录运行服务器

$pwd
/Users/foo
$python myapp/manage.py runserver
Run Code Online (Sandbox Code Playgroud)

open()使用foo作为根目录.

如果我这样做

$cd myapp
$pwd
/Users/foo/myapp
$python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

myapp 将是根.

假设我的文件夹结构如下所示

foo/myapp/anotherapp
Run Code Online (Sandbox Code Playgroud)

我希望能够打开一个位于foo/myapp/anotherapp脚本的文件,该脚本也foo/myapp/anotherapp只是通过说

file = open('./baz.txt')
Run Code Online (Sandbox Code Playgroud)

现在,根据我运行服务器的位置,我不得不说

file = open('./myapp/anotherapp/baz.txt')
Run Code Online (Sandbox Code Playgroud)

要么

file = open('./anotherapp/baz.txt')
Run Code Online (Sandbox Code Playgroud)

Tad*_*eck 38

已经在Favorite Django Tips&Tricks问题中描述了该解决方案.解决方案如下:

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

这正是你提到的.

PS.请不要覆盖file变量,它是内置的一个.