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
变量,它是内置的一个.