मेरे पास पाइथन लॉगिंग मॉड्यूल का उपयोग करके एक पायथन लॉगर सेट अप है। मैं कॉन्फ़िगरर मॉड्यूल का उपयोग कर कॉन्फ़िगरेशन फ़ाइल में लॉगिंग फॉर्मेटर ऑब्जेक्ट के साथ उपयोग कर रहा स्ट्रिंग को संग्रहीत करना चाहता हूं।क्या अस्थायी रूप से पाइथन की स्ट्रिंग इंटरपोलेशन को अक्षम करना संभव है?
स्वरूप स्ट्रिंग को एक अलग फ़ाइल में सेटिंग्स के शब्दकोश में संग्रहीत किया जाता है जो कॉन्फ़िगरेशन फ़ाइल के पढ़ने और लिखने को संभालता है। मेरी समस्या यह है कि अजगर अभी भी फ़ाइल को प्रारूपित करने का प्रयास करता है और जब यह सभी लॉगिंग-मॉड्यूल-विशिष्ट स्वरूपण झंडे को पढ़ता है तो गिर जाता है।
{
"log_level":logging.debug,
"log_name":"C:\\Temp\\logfile.log",
"format_string":
"%(asctime)s %(levelname)s: %(module)s, line %(lineno)d - %(message)s"
}
मेरा प्रश्न सरल है: मैं इसे कहीं और रखते हुए स्वरूपण कार्यक्षमता को कैसे अक्षम कर सकता हूं। मेरी शुरुआती प्रतिक्रिया विभिन्न प्रतिशत प्रतीकों से बचने के लिए बैकस्लैश का अत्यधिक उपयोग था, लेकिन निश्चित रूप से स्वरूपण को स्थायी रूप से तोड़ देता है जैसे कि जब भी मुझे इसकी आवश्यकता होती है तब भी यह काम नहीं करेगा।
मुझे यह भी उल्लेख करना चाहिए, क्योंकि यह टिप्पणियों में खरीदा गया था, कि कॉन्फ़िगर पार्सर कुछ आंतरिक इंटरपोलेशन करता है जो यात्रा का कारण बनता है। यहां मेरा ट्रेसबैक है:
Traceback (most recent call last):
File "initialconfig.py", line 52, in <module>
"%(asctime)s %(levelname)s: %(module)s, line %(lineno)d - %(message)s"
File "initialconfig.py", line 31, in add_settings
self.set(section_name, setting_name, default_value)
File "C:\Python26\lib\ConfigParser.py", line 668, in set
"position %d" % (value, m.start()))
ValueError: invalid interpolation syntax in '%(asctime)s %(levelname)s: %(module
)s, line %(lineno)d - %(message)s' at position 10
साथ ही, अच्छी सेटिंग्स-फ़ाइल प्रथाओं पर सामान्य पॉइंटर्स अच्छा होगा। यह पहली बार है जब मैंने ConfigParser (या उस मामले के लिए लॉगिंग) के साथ कुछ भी महत्वपूर्ण किया है।
अग्रिम धन्यवाद, डोमिनिक
प्रक्षेप (मैं अजगर
3.6.0
उपयोग कर रहा हूँ)? मुझे लगता है कि सही शब्द स्वरूपित होगा –@ एडिसन: नहीं, पायथन में इसे इंटरपोलेशन भी कहा जाता है। http://docs.python.org/library/stdtypes.html#string-formatting-operations –
मैं उलझन में हूं - स्वरूपण केवल तभी होता है जब आप स्पष्ट रूप से इसे '%' [या 'string.substitute () ']। –