पाइथन प्रोग्राम, अंतर्निहित मॉड्यूल (ConfigParser) या स्वतंत्र प्रोजेक्ट (ConfigObj), या YAML डेटा क्रमबद्धता प्रारूप का उपयोग करने के लिए सेटिंग्स फ़ाइल बनाने के लिए कौन सा बेहतर है? मैंने सुना है कि ConfigPbj को ConfigParser से उपयोग करना आसान है, भले ही यह अंतर्निहित लाइब्रेरी न हो। मैंने यह भी पढ़ा है कि पीईवाईएएमएल का उपयोग करना आसान है, हालांकि वाईएएमएल का उपयोग करने में थोड़ा समय लगता है। एक तरफ कार्यान्वयन की आसानी, सेटिंग्स/विन्यास फाइल बनाने के लिए सबसे अच्छा विकल्प कौन सा है?Python सेटिंग्स फ़ाइल के लिए YAML का उपयोग कर ConfigObj/ConfigParser बनाम
उत्तर
कॉन्फ़िगरेशन का उपयोग करना कम से कम बहुत सरल और सामान्य में आईएनआई फ़ाइलें वाईएएमएल की तुलना में बहुत सरल (और अधिक व्यापक रूप से उपयोग की जाती हैं) हैं। अधिक जटिल मामलों के लिए, सत्यापन, डिफ़ॉल्ट मान और प्रकार सहित, ConfigObj configspec सत्यापन के माध्यम से ऐसा करने का एक तरीका प्रदान करता है।
सरल कोड ConfigObj के साथ एक INI फ़ाइल को पढ़ने के लिए:
from configobj import ConfigObj
conf = ConfigObj('filename.ini')
section = conf['section']
value = section['value']
यह स्वचालित रूप से आप के लिए सूची मान संभालती है और बहु-मान की अनुमति देता है। यदि आप कॉन्फ़िगरेशन फ़ाइल को संशोधित करते हैं तो आप आदेश और टिप्पणियों को संरक्षित करते समय इसे वापस लिख सकते हैं।
, अधिक जानकारी के लिए इन लेख देखें प्रकार सत्यापन के उदाहरण सहित:
कॉन्फ़िगरर्स के पास वास्तव में एक खराब एपीआई है, कॉन्फ़िगरेशन अच्छा होना चाहिए, लेकिन मैंने कभी इसका उपयोग नहीं किया है, आईएनआई फाइलों के लिए मैं आमतौर पर अपना खुद का पार्सर लागू करता हूं।
हालांकि इन-जैसे प्रारूप अलग-अलग प्रकार, अनुक्रम या रिकर्सिव मैपिंग को किसी भी तरह से संभाल नहीं पाते हैं इसलिए मैं यम का उपयोग करूंगा। एक संपादक के साथ पढ़ना और संपादित करना आसान है, उन फ़ाइलों को पार्स करने के लिए एक मानक है और आपके पास इन-जैसा प्रारूपों में से कोई भी उल्लिखित डाउनसाइड्स नहीं है।
यह है कि आप अपने config में संग्रहीत करना चाहते हैं पर निर्भर करता है फाइलें और आप उनका उपयोग कैसे करते हैं
आप दौर ट्रिपिंग है (YAML → कोड → YAML) और टिप्पणियों संरक्षित आप
PyYAML
याConfigParser
का उपयोग नहीं कर सकते हैं।आप अपनी चाबी (जैसे जब आप अपने config फाइल में जाँच) के आदेश को संरक्षित करना चाहते हैं, तो
(जो यह कम आसान एक सामान्य मानचित्रण से अद्यतन करने के लिए बनाता है)PyYAML
नहीं करता है कि जब तक आप!!omap
निर्दिष्टयदि आप मैपिंग्स/डिक्शनियर युक्त अज्ञात तत्वों की सूचियों के साथ जटिल संरचनाएं चाहते हैं, तो
ConfigParser
औरConfigObj
आपकी मदद नहीं करेंगे क्योंकि आईएनआई फाइलों की कुंजी-मूल्य जोड़े को अनुभागों में जाना होगा और सूचियां केवल मूल्य हो सकती हैं।
YAML पाठक के ruamel.yaml
कार्यान्वयन ऊपर ¹ के सभी का समर्थन करता है। मैंने लंबे समय तक राउंड ट्रिप टिप्पणी संरक्षण के लिए फ़ज़ीमैन के उत्कृष्ट कॉन्फ़िगरेशन का उपयोग किया है, साथ ही साथ अधिक जटिल संरचनाओं के लिए पीईवाईएएमएल का उपयोग किया है और यह दोनों दुनिया के सर्वश्रेष्ठ संयोजन को जोड़ता है।ruamel.yaml
yaml
उपयोगिता कि YAML
ConfigObj
INI फ़ाइलों में बदल सकते हैं
¹ ruamel.yaml एक YAML पुस्तकालय YAML 1.2 का समर्थन करता है (मुझे लगता है कि का उपयोग करना चाहिये, लेकिन फिर मैं पैकेज के लेखक हूँ) भी शामिल है। PyYAML केवल (अधिकांश) YAML 1.1 का समर्थन करता है।
ruamel.yaml को इंगित करने के लिए धन्यवाद। – jgomo3
मुझे एक अस्वीकरण याद आती है कि इस पोस्ट का लेखक 'ruamel.yaml'' का लेखक भी है। – xmedeko
@xmedeko वह जगह है जहां '(लापरवाही प्लग) 'का अर्थ है, लेकिन मैं मानता हूं कि यह अधिक स्पष्ट होना चाहिए (जैसा कि मैंने बाद के उत्तरों में किया है, जैसे [यहां] (http://stackoverflow.com/a/29415791/ 1307 9 0 9) और [यहां] (http://stackoverflow.com/a/36631057/1307905) यह जवाब ruamel.yaml प्रकाशित करना शुरू करने के ठीक बाद से है। – Anthon
- 1. सी # App.config बनाम सेटिंग्स फ़ाइल
- 2. रत्नों के भीतर yaml फ़ाइलों का उपयोग
- 3. अनुप्रयोग सेटिंग्स के लिए गुण। सेटिंग्स का उपयोग
- 4. नई लाइन "\ n" YAML फ़ाइल
- 5. YAML फ़ाइल को पायथन dict
- 6. विशाल XML फ़ाइलों के लिए python lxml.etree का उपयोग
- 7. जावा में XStream का उपयोग कर YAML से Serialise
- 8. क्लोजर: क्लोजर फ़ाइल को YAML
- 9. का उपयोग Django सेटिंग्स
- 10. YAML
- 11. yaml
- 12. YAML
- 13. Python 2.6 में यूनिकोड_लिटरल्स का उपयोग कर कोई भी गॉचास?
- 14. सामान्य सेटिंग्स के लिए सामान्य सेटिंग्स.सेटिंग फ़ाइल
- 15. yaml
- 16. पढ़ना YAML अजगर
- 17. एक्सकोड: प्रोजेक्ट सेटिंग्स बनाम लक्ष्य सेटिंग्स
- 18. गलत (पुरानी) डेटाबेस सेटिंग्स का उपयोग कर Django प्रोजेक्ट
- 19. सी # सेटिंग्स फ़ाइल: मुझे सेटिंग्स.डिफॉल्ट का उपयोग क्यों करना है?
- 20. मैं शुद्ध पायथन से एक yaml फ़ाइल कैसे बना सकता हूं? <a href="http://mikkel.elmholdt.dk/?p=4" rel="nofollow noreferrer">Using YAML with Python</a></p> <p>मूल YAML फ़ाइल से
- 21. वाइल्डकार्ड का उपयोग कर फ़ाइल के लिए खोजें
- 22. विजुअल स्टूडियो 2008 में उपयोगकर्ता सेटिंग्स बनाम एप्लिकेशन सेटिंग्स बनाम संसाधन
- 23. क्रॉस प्लेटफ़ॉर्म का उपयोग करने के लिए python .py फ़ाइल को निष्पादन योग्य फ़ाइल में कैसे परिवर्तित करें?
- 24. मैं pYYAML का उपयोग कर एक वाईएएमएल फ़ाइल में एक पायथन ट्यूपल कैसे जोड़ सकता हूं?
- 25. Django जुड़नार YAML स्वीकार नहीं कर रहे हैं?
- 26. पायथन 2.7: yaml
- 27. Django/Python: सेटिंग्स पर बिंदु से संबंध अपडेट करें। AUTH_USER_MODEL
- 28. .NET में विभिन्न वातावरण के लिए अलग-अलग सेटिंग्स सेटिंग्स का उपयोग कैसे करें?
- 29. डब्ल्यूसीएफ सेवाविवियों बनाम बाध्यकारी सेटिंग्स
- 30. रूबी: YAML
ConfigObj प्रकार और अनुक्रम ठीक संभालता है :-) – fuzzyman