我正在編寫一個單元測試,需要訪問我放在我的django應用程序目錄下「fixtures」目錄下的圖像文件。我想在我的測試中使用相對路徑打開這個圖像文件,這將需要我獲得django應用程序的絕對路徑。有沒有辦法獲得django應用程序的絕對路徑?獲取django應用程序的絕對路徑
回答
Python模塊(包括Django的應用程序)有一個__file__
屬性,它告訴你在文件系統中的文件__init__.py
的位置,所以
import appname
pth = os.path.dirname(appname.__file__)
應該做你想要什麼。
在通常情況下,os.path.absname(appname.__path__[0])
,但如果他們想以怪異的方式導入文件,應用程序可能會更改它。
(我總是做PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
在我settings.py
,雖然 - 很容易讓那些需要是絕對路徑的各種設置)
通常,這是我在我的settings.py文件中添加的,所以我可以引用項目根目錄。
import os.path
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
此方法將獲得任何python文件的目錄。
這是聰明的,但它給人的路徑項目不應用。在我的情況下,它會工作得很好,因爲在文件系統中,我的應用程序存在於項目之下,否則它不會生成。有什麼辦法可以實際獲得應用程序的路徑嗎?或者這是我能得到的最接近的? – tamakisquare 2012-03-24 00:10:17
您可以在碰巧存在於應用中的文件中使用它,或者使用os.path.join() – Kekoa 2012-03-24 00:12:36
將文件夾內的應用程序的路徑追加到PROJECT_ROOT。明白了。謝謝:) – tamakisquare 2012-03-24 00:15:31
- 1. WIN32_FIND_DATA - 獲取絕對路徑
- 2. Django:獲取當前Django應用程序的路徑
- 3. 如何從相對路徑中獲取我的Perl程序的絕對路徑?
- 4. Django應用程序路徑
- 5. 獲取對象的絕對路徑
- 6. 獲取應用程序的路徑
- 7. 無法讀取文件絕對路徑(以應用程序包)
- 8. 如何用javascript_include_tag獲取絕對路徑?
- 9. 用Perl獲取絕對路徑
- 10. 獲取應用程序路徑
- 11. mono c#獲取應用程序路徑
- 12. 獲取應用程序路徑
- 13. wxWidgets:獲取應用程序路徑
- 14. 如何獲取gulpfile的絕對路徑?
- 15. 獲取java中url的絕對路徑
- 16. 獲取目錄的絕對路徑
- 17. 獲取文件的絕對路徑
- 18. Java:獲取項目的絕對路徑
- 19. Dropwizard路徑:獲取應用程序中的所有路徑
- 20. 從相對路徑c獲取絕對路徑#
- 21. 如何根據兩個絕對路徑獲取相對路徑?
- 22. 在wpf應用程序中獲取資源文件夾的絕對路徑或動態路徑
- 23. 獲取絕對桌面路徑
- 24. 如何獲取圖像絕對路徑?
- 25. Java - 獲取服務器絕對路徑
- 26. 文件上傳:獲取絕對路徑
- 27. 從webkitdirectory元素獲取絕對路徑
- 28. 在javascript中獲取絕對路徑
- 29. 獲取「工作簿絕對路徑」
- 30. 獲取絕對文件路徑
這實際上並不正確,因爲appname .__ path__是列表,而不是字符串。見http://docs.python.org/2/tutorial/modules.html#packages-in-multiple-directories – 2012-12-06 12:13:26
@GeorgeLund當然,你是對的;我很愚蠢。你可以做'appname .__ path __ [0]',儘管它似乎有可能改變它;你也可以使用'os.path.dirname(appname .__ file __)',因爲'__file__'指向'__init __。py'文件。 – Dougal 2012-12-06 17:33:45
你可以改變你的答案以符合你的評論,因爲答案是大多數人首先看到的。 – Igor 2016-07-15 19:04:18