2012-02-28 16 views
14

तो मैं एक स्क्रिप्ट है कि एक कॉन्फ़िग फ़ाइल से पढ़ता लिख ​​रहा हूँ, और मैं इसे उपयोग करने के लिए वास्तव में कैसे configparser के रूप में यहां उनका उल्लेख इस्तेमाल किया जा बनाया गया है चाहता हूँ: http://docs.python.org/release/3.2.1/library/configparser.htmlअजगर configparser बिना कुंजी को स्वीकार नहीं करेगा महत्व देता

मैं कर रहा हूँ पायथन 3.2.1 का उपयोग कर। स्क्रिप्ट, पूर्ण होने पर, विंडोज 2008 आर 2 मशीन पर पाइथन के समान संस्करण का उपयोग करके या उस समय के नवीनतम संस्करण को संगतता मानते हुए चलाएगा।

#!/user/bin/env python 
import configparser 

config = configparser.ConfigParser() 
config.read('c:\exclude.ini') 
config.sections() 

यह extrae.ini फ़ाइल को पढ़ने के लिए ठीक काम करता है - जब तक कि मेरे पास कोई कुंजी न हो। http://docs.python.org/release/3.2.1/library/configparser.html#supported-ini-file-structure

यह अभी भी हुए उस हर फेंकता है: सोच रही थी मैं कुछ कर रही हो सकता है गलत पार्स करने उदाहरण यहाँ सूचीबद्ध करने की कोशिश की

File "C:\Python32\lib\configparser.py", line 1081, in _read 
    raise e 
configparser.ParsingError: Source contains parsing errors: c:\exclude.ini 
    [line 20]: 'key_without_value\n' 

मैं एक नुकसान में हूँ ... मैं सचमुच नकल कर रहा हूँ/चिपकाने मेरे द्वारा उपयोग किए जा रहे सटीक पायथन संस्करण के लिए प्रलेखन से उदाहरण कोड और यह काम नहीं कर रहा है जैसा कि इसे करना चाहिए। मैं केवल यह मान सकता हूं कि मुझे कुछ याद आ रहा है क्योंकि मैं वास्तव में किसी भी मुद्दे के साथ किसी को भी नहीं ढूंढ सकता।

उत्तर

12

ConfigParser constructor में False के डिफ़ॉल्ट मान के साथ एक कीवर्ड तर्क allow_no_value है।

इसे सही करने की कोशिश करें, और मैं शर्त लगा रहा हूं कि यह आपके लिए काम करेगा।

+0

बहुत बढ़िया,। शायद मुझे उन्हें एक उदाहरण भेजना चाहिए जो उनके उदाहरण को बदलने का सुझाव दे रहा है .ini उस अनुभाग के ऊपर एक टिप्पणी डालने के लिए यह बताते हुए कि भाग केवल तभी काम करता है जब कन्स्ट्रक्टर बदल जाता है। मुझे लगता है कि मुझे पूरे दस्तावेज को पढ़ना चाहिए था, लेकिन जिस तरह से चीजों को सेट किया गया था, उसने मुझे देखा जैसे इसे डिफ़ॉल्ट रूप से इस तरह काम करना चाहिए था। – Sparc

+0

यह भी काम करता है अनुभाग इस तरह दिखता है: [सॉफ्टवेयर] 3700 जर्नल कॉपी 1.0.2 एडोब फ़्लैश प्लेयर 11 ActiveX Adobe रीडर एक्स (10.1.7) - Deutsch डॉटनैट फ्रेमवर्क 4.0 [...] – enthus1ast

0
class RawConfigParser: 
def __init__(self, defaults=None, dict_type=_default_dict, 
      allow_no_value=False): 
    self._dict = dict_type 
    self._sections = self._dict() 
    self._defaults = self._dict() 
    if allow_no_value: 
     self._optcre = self.OPTCRE_NV 
    else: 
     self._optcre = self.OPTCRE 
    if defaults: 
     for key, value in defaults.items(): 
      self._defaults[self.optionxform(key)] = value 

आयात ConfigParser

सीएफ = ConfigParser.ConfigParser (allow_no_value = सच) कार्ल thankyou

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