2011-12-02 13 views
11

मैं एक पायथन मॉड्यूल की तलाश में हूं जो विंडोज के तहत एएनएसआई समर्थन जोड़ देगा।पायथन मॉड्यूल विंडोज़ पर stdout के लिए एएनएसआई रंग सक्षम करने के लिए?

इसका मतलब है कि मॉड्यूल आयात करने के बाद, यदि आप एएनएसआई से बचने वाले तारों को आउटपुट करते हैं, तो वे तदनुसार दिखाई देंगे।

+0

इसका मतलब है कि पाइथन बंदरपैचिंग, जो एक बुरी चीज है। स्पष्ट रूप से stdout फ़िल्टर सेटअप करना बेहतर है। –

उत्तर

3

दो पायथन मॉड्यूल हैं जो colorama और tendo.ansiterm मॉड्यूल करने में सक्षम हैं, जो मूल रूप से waf के लिए लिखा गया था।

प्रारंभिक परीक्षणों से संकेत मिलता है कि colorama अधिक परिपक्व है, भले ही इसे एक के बजाय कोड की दो पंक्तियों की आवश्यकता हो।

import sys 
try: 
    import colorama 
    colorama.init() 
except: 
    try: 
     import tendo.ansiterm 
    except: 
     pass 

sys.stdout.write"\033[33mYellow Submarine" 
sys.stderr.write"\033[31mred, red , wine!" 

अब, दोनों सामान्य रूप से काम करेंगे, लेकिन यदि आप stderr या stdout का केवल एक रीडायरेक्ट करने के लिए प्रयास करते हैं, ansiterm स्क्रीन करने के लिए होगा उत्पादन एएनएसआई कोड और पुनः निर्देशित उत्पादन।

मुझे यकीन नहीं है, लेकिन मुझे संदेह है कि सही व्यवहार एएनएसआई कोड को पट्टी करना है जब आउटपुट एक टीटी नहीं है, तो आप लॉग फाइलों में एएनएसआई एस्केप नहीं देखना चाहते हैं।

+0

एएनएसआई लॉग फाइलों में भाग गया ठीक है, मुझे विश्वास है; उदाहरण के लिए, 'कम' यूनिक्स पेजर एएनएसआई रंग अनुक्रमों के साथ टेक्स्ट को सही तरीके से प्रदर्शित करता है। – EOL

11

आपकी सर्वश्रेष्ठ शर्त शायद colorama मॉड्यूल का उपयोग करने के लिए संभव है।

असल में, मुझे विश्वास है कि विंडोज कंसोल एएनएसआई रंगों को मूल रूप से समर्थन नहीं देता है। रंगमा एएनएसआई अनुक्रमों को रोककर और उचित विंडोज रंग परिवर्तन कॉल करने के द्वारा इस कठिनाई को हल करता है। इस तरह, आपका कोड काफी पोर्टेबल हो सकता है, क्योंकि यह विंडोज़ और एएनएसआई-अनुरूप टर्मिनल दोनों में रंगों को प्रिंट कर सकता है।