के बाद से वहाँ अभी भी अजगर 2.6 के बारे में एक अनुत्तरित सवाल है, निम्नलिखित अजगर 2.7 या 2.6 के साथ काम करेंगे। यह कॉन्फ़िगरर्स में विकल्प, विभाजक, और मान को पार्स करने के लिए उपयोग किए जाने वाले आंतरिक रेगेक्स को प्रतिस्थापित करता है।
def rawConfigParserAllowNoValue(config):
'''This is a hack to support python 2.6. ConfigParser provides the
option allow_no_value=True to do this, but python 2.6 doesn't have it.
'''
OPTCRE_NV = re.compile(
r'(?P<option>[^:=\s][^:=]*)' # match "option" that doesn't start with white space
r'\s*' # match optional white space
r'(?P<vi>(?:[:=]|\s*(?=$)))\s*' # match separator ("vi") (or white space if followed by end of string)
r'(?P<value>.*)$' # match possibly empty "value" and end of string
)
config.OPTCRE = OPTCRE_NV
config._optcre = OPTCRE_NV
return config
के रूप में उपयोग
fp = open("myFile.conf")
config = ConfigParser.RawConfigParser()
config = rawConfigParserAllowNoValue(config)
साइड नोट
अजगर 2.7 के लिए ConfigParser में एक OPTCRE_NV नहीं है, लेकिन अगर हम वास्तव में इसके बाद के संस्करण समारोह में इसका इस्तेमाल किया, regex कोई भी वापसी होगी vi और value के लिए, जो ConfigParser को आंतरिक रूप से विफल होने का कारण बनता है। ऊपर दिए गए फ़ंक्शन का उपयोग vi और value के लिए एक खाली स्ट्रिंग देता है और हर कोई खुश है।
कृपया विराम चिह्न का उपयोग करें। – Seth