open()
を使用してDjangoアプリからファイルを開きたい。問題は、open()
がrunserver
を実行するディレクトリを使用しているように見えることです。ルートとしてのコマンド。
例えば。このように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')
_
解決策は 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
変数を上書きしないでください。 組み込みの1つ です。
私は別のスタックオーバーフローの質問を通して答えを見つけたと思います(はい、私は尋ねる前に検索しました...)
私は今これをします
pwd = os.path.dirname(__file__)
file = open(pwd + '/baz.txt')