1. 程式人生 > >Django裏使用open函數

Django裏使用open函數

統一 markdown app 就是 當前 使用 般的 裏的 問題

Django裏使用open函數

前言

在Django裏使用open函數打開一個文件的時候,常常會遇到路徑錯誤的問題。我在Django APP裏寫了一個爬蟲用於為網站提供數據,但是需要打開文件,也就是在這裏遇到了路徑錯誤,爬蟲本身運行起來是沒有問題,但是放到Django裏就出現了路徑出錯的問題。幾番查找,終於在Stack Overflow上找到了解決方法,Stack Overflow上提出的問題和我遇到的一模一樣,下面就簡單翻譯介紹下問題內容:

  • 當腳本文件處於foo/myapp/anotherapp目錄,被讀取文件baz.txt也處於foo/myapp/anotherapp目錄時,一般的讀取該文件的代碼應該是這樣寫:

    file = open(‘./baz.txt‘)
  • 但是根據你啟動Django項目所在的路徑的不同,open函數裏的參數路徑也是不一樣的,如:

    $pwd
    /Users/foo
    $python myapp/manage.py runserver

    我們在/Users/foo目錄下啟動Django項目,open函數會使用foo作為根目錄

    $cd myapp
    $pwd
    /Users/foo/myapp
    $python manage.py runserver

    這樣的話,則會使用myapp作為根目錄

  • 在打開baz.txt文件的時候,對應的open函數參數就要發生改變,分別為

    file = open(‘./myapp/anotherapp/baz.txt‘)

    file = open(‘./anotherapp/baz.txt‘)
  • 那麽有什麽方法可以解決?我們可以采用讀取當前目錄,然後拼接的方式統一解決路徑問題。

    import os
    module_dir = os.path.dirname(__file__)  # 獲取當前目錄
    file_path = os.path.join(module_dir, ‘baz.txt‘)
  • 原文地址

Django裏使用open函數