Sunday 15 April 2012

Python : How to access file from different directory -


मेरे पास निम्न प्रोजेक्ट स्ट्रक्चर है

  नमूनाप्रोजेक्ट कॉम पायथन उदाहरण स्रोत utils ConfigManager.py कॉन्फ़ Constants.cfg   

ConfigManager.py से constants.cfg तक कैसे पहुंचे

मेरे पास एक सीमा है

  1. मैं constants.cfg का पूर्ण पथ नहीं दे सकता (क्योंकि मुझे अलग पीसी में चलना चाहिए) / Li>
  2. इसके अलावा, अगर मैं नीचे की तरह कुछ प्रतिनिधित्व करता हूं, तो मैं फ़ाइल को एक्सेस कर सकता हूं। लेकिन मैं हर बार स्लैश वापस नहीं देना चाहता हूं

      filename = .. \\ .. \\ .. \\ .. \\ .. \\ .. \\ स्थिरांक Cfg`     

    वर्तमान में मैं ऐसा कुछ कर रहा हूं। लेकिन यह केवल तभी होता है जब constants.cfg और ConfigManager.py उसी निर्देशिका में हैं

      currentDir = os.path.dirname (os.path.abspath (inspect.getfile (inspect.currentframe ()) )) फ़ाइल = ओपन (ओएस.path.join (वर्तमान डीआईआर, 'स्थिरांक cfg'))    

    अगर conf एक पायथन पैकेज है, तो आप इसका उपयोग कर सकते हैं:

      आयात करें pkgutil data = pkgutil.get_data ("Conf", "constants.cfg")   

    या यदि setuptools स्थापित है ??? :

      आयात करें pkg_resources डेटा = pkg_resources.resource_string ('conf', 'constants.cfg')   

    यदि constants.cfg किसी पैकेज में नहीं है, तो उसके पथ को कमांड-लाइन पैरामीटर के रूप में पास करें, या इसे एक वातावरण चर में सेट करें जैसे, CONFIG_MANAGER_CONSTANTS_PATH , या डिफ़ॉल्ट पथ के एक निश्चित सेट से पढ़ें उदा, < कोड> os.path.expanduser ( "~ / .config / ConfigManager / constants.cfg") । उपयोगकर्ता डेटा डालने का स्थान ढूंढने के लिए, आप इसका उपयोग कर सकते हैं।

    आप os.getcwd () का उपयोग नहीं कर सकते हैं, यदि आप चल सकते हैं तो वर्तमान कार्यशील निर्देशिका ConfigManager.py विभिन्न निर्देशिकाओं से सापेक्ष पथ ".. / .. / ..." उसी कारण से काम नहीं करेगा।

    यदि आप निश्चित हैं कि ConfigManager की रिश्तेदार स्थिति फाइल सिस्टम में

    और constants.cfg नहीं बदलेगा:

      आयात आयात आयात की जांच SYS def get_my_path (): try: filename = __file__ # जहां हम थे जब NameError के अलावा मॉड्यूल लोड किया गया था: # fallback filename = inspect.getsourcefile (get_my_path) रिटर्न os.path.realpath (filename) # पथ ConfigManager.py cm_path = get_my_path () # जाना 6 निर्देशिका के स्तर तक sp_path = कमांड (lambda x, f: f (x), [os.path.dirname] * 6, cm_path) constants_path = os.path.join (sp_path, "conf", "constants.cfg")    

No comments:

Post a Comment