का पूर्ण पथ प्राप्त करें मैं एक यूनिट परीक्षण लिख रहा हूं जिसे मैंने अपनी फ़ाइल को "फिक्स्चर" निर्देशिका में डालने की आवश्यकता है, जो कि मेरी django ऐप निर्देशिका के ठीक नीचे है। मैं इस छवि फ़ाइल को सापेक्ष पथ का उपयोग करके अपने परीक्षण में खोलना चाहता हूं, जिसके लिए मुझे django ऐप का पूर्ण पथ प्राप्त करने की आवश्यकता होगी। क्या django ऐप का पूर्ण पथ प्राप्त करने का कोई तरीका है?django ऐप
उत्तर
अजगर मॉड्यूल (Django क्षुधा सहित) एक __file__
विशेषता है कि आप फाइल सिस्टम पर उनके __init__.py
फ़ाइल का स्थान बताता है, तो
import appname
pth = os.path.dirname(appname.__file__)
आप क्या चाहते हैं करना चाहिए।
सामान्य परिस्थितियों में, os.path.absname(appname.__path__[0])
, लेकिन ऐप्स के लिए यह संभव है कि वे अजीब तरीके से फ़ाइलों को आयात करना चाहते हैं।
(मैं हमेशा अपने settings.py
में PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
करते हैं, हालांकि -। यह पूर्ण पथ होने की जरूरत है कि विभिन्न सेटिंग्स के लिए आसान बना देता है)
आम तौर पर, मैं अपनी सेटिंग्स.py फ़ाइल में जो जोड़ता हूं, इसलिए मैं प्रोजेक्ट रूट का संदर्भ दे सकता हूं।
import os.path
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
इस विधि को किसी भी पायथन फ़ाइल की निर्देशिका मिल जाएगी।
कि स्मार्ट है, लेकिन यह परियोजना के लिए पथ एप्लिकेशन के लिए नहीं देता है । मेरे मामले में, यह ठीक काम करेगा क्योंकि, फाइल सिस्टम में, मेरा ऐप परियोजना के तहत रहता है, अन्यथा यह नहीं करेगा। क्या कोई तरीका है कि मैं वास्तव में ऐप का मार्ग प्राप्त कर सकता हूं? या यह सबसे नज़दीकी है जो मैं प्राप्त कर सकता हूं? – tamakisquare
आप ऐप में होने वाली फ़ाइल के भीतर इसका उपयोग कर सकते हैं, या os.path.join() – Kekoa
का उपयोग कर PROJECT_ROOT में फ़ोल्डर के भीतर ऐप के पथ को जोड़ सकते हैं। धन्यवाद :) – tamakisquare
यह वास्तव में सही नहीं है क्योंकि appname .__ path__ एक स्ट्रिंग नहीं है, सूची है। Http://docs.python.org/2/tutorial/modules.html#packages-in-multiple- निर्देशिकाएं –
@ जॉर्ज लॉन्ड आप निश्चित रूप से सही हैं; मेरे मूर्ख आप 'appname .__ पथ __ [0]' कर सकते हैं, हालांकि ऐसा लगता है कि इसे बदलना संभव है; आप 'os.path.dirname (appname .__ फ़ाइल __)' का उपयोग भी कर सकते हैं, क्योंकि '__file__' अंक' __init __। py' फ़ाइल को इंगित करता है। – Dougal
क्या आप अपनी टिप्पणी से मेल खाने के लिए अपना उत्तर बदल सकते हैं क्योंकि उत्तर सबसे अधिक लोग पहले देखते हैं। – Igor