2010-07-12 13 views
9

सरल मामलेकॉन्फ़िग फ़ाइल

का संबोधित करते हुए क्रॉस-प्लेटफॉर्म मैं एक अजगर कार्यक्रम है कि मैं दोनों * nix और विंडोज सिस्टम पर समर्थन करने का इरादा है। कार्यक्रम कम से कम वैश्विक स्तर पर विन्यास योग्य होना चाहिए। कॉन्फ़िगरेशन फ़ाइल को संबोधित करने के लिए कोई क्रॉस-प्लेटफ़ॉर्म तरीका है?

आईई। मैं

import configmagic 
configFile = configmagic("myprogram", "mainconfig") 


एक की तर्ज थोड़ा और अधिक उन्नत मामले

एक ही उपयोगकर्ता-विशिष्ट के लिए लागू किया जा सकता है के साथ के बजाय

import platform 
if platform.system() == "Windows": 
    configFilePath = "C:\MyProgram\mainconfig.ini" 
else: 
    configFilePath = "/etc/myprogram/mainconfig.ini" 

कुछ लिखना चाहते हैं विन्यास? अर्थात। यूनिक्स के तहत ~user/.myprogram/ में कॉन्फ़िगरेशन को रखने के लिए, और HKEY_LOCAL_USER विंडोज के तहत रजिस्ट्री अनुभाग में?

+0

http://stackoverflow.com/questions/200599/whats-the-best-way-to-store-simple-user-settings-in-python और http://stackoverflow.com/questions/965694/ की संभावित डुप्ली व्हाट्स-द-आधिकारिक-तरीके-भंडारण-सेटिंग्स-के लिए-पायथन-प्रोग्राम – rubenvb

+1

टिप के लिए धन्यवाद, लेकिन यह वास्तव में एक डुप्ली नहीं है। वे दो प्रश्न कॉन्फ़िगरेशन फ़ाइल के प्रारूप के बारे में हैं, जबकि मेरा प्रश्न इसके स्थान के बारे में है। – dpq

+1

~/.myprogram का उपयोग न करें, एक्सडीजी बेसडियर स्पेक का उपयोग करें, जो परिभाषित करता है कि आपको कहां * कॉन्फ़िगरेशन को संग्रहीत/पढ़ना चाहिए। (डिफ़ॉल्ट रूप से, ~/.config/myprogram)। – WhyNotHugo

उत्तर

4

अजगर, यह भी विंडोज पर विंडोज पर आगे स्लेश पथ, और os.path.expanduser काम करता है की अनुमति देगा ताकि आप एक उपयोगकर्ता के विशिष्ट फ़ाइल पथ का उपयोग कर प्राप्त कर सकते हैं: यदि आप में एक .ini लगाना चाहते हैं

config_file = os.path.expanduser("~/foo.ini") 

उपयोगकर्ता की होम निर्देशिका। मुझे यकीन नहीं है कि फ़ाइल-आधारित .ini और रजिस्ट्री सेटिंग्स को कैसे एकीकृत करें।

+0

बढ़िया है, और क्या पहला मामला हल करने का कोई तरीका है (वैश्विक विन्यास फाइल पथ)? – dpq

2

आप dirspec का उपयोग करना चाह सकते हैं। यह जीएनयू/लिनक्स, मैक ओएस और विंडोज में काम करता है।

आप से प्राप्त कर सकते हैं: Launchpad

या PyPI

pip install dirspec 

से और की तरह अपने कोड का उपयोग करें कुछ में यह स्थापित करने:

from dirspec.basedir import get_xdg_config_home 
config_path = get_xdg_config_home() 

यह उबंटू एक द्वारा प्रयोग किया जाता है, को देखने के यह कोड उदाहरण उनके प्रलेखन से: https://one.ubuntu.com/developer/data/u1db/tutorial#storing-and-retrieving-tasks

संबंधित मुद्दे