2010-02-24 11 views
28

में टेक्स्ट रंग बदलें मैं सोच रहा था कि क्या कोई जानता है कि शेल में दिखाई देने वाले पाठ का रंग कैसे सेट किया जाए। मैंने देखा कि स्क्रीन पर जानकारी (मेरे लिनक्स बॉक्स पर) प्रिंट करते समय 'एलएस' कुछ अलग-अलग रंगों का उपयोग करता है, यह सोच रहा था कि क्या मैं पाइथन में इसका लाभ उठा सकता हूं।पायथन | खोल

उत्तर

52

शापित या एएनएसआई एस्केप दृश्यों का उपयोग करें। बचने के अनुक्रमों को शुरू करने से पहले, आपको यह जांचना चाहिए कि stdout एक tty है। आप इसे sys.stdout.isatty() के साथ कर सकते हैं। यहाँ एक समारोह मेरा एक परियोजना है कि लाल या हरे रंग में उत्पादन प्रिंट, स्थिति के आधार पर से खींच लिया है, एएनएसआई भागने दृश्यों का उपयोग करते हुए:

def hilite(string, status, bold): 
    attr = [] 
    if status: 
     # green 
     attr.append('32') 
    else: 
     # red 
     attr.append('31') 
    if bold: 
     attr.append('1') 
    return '\x1b[%sm%s\x1b[0m' % (';'.join(attr), string) 
+13

+1 विशेष रूप से 'sys.stdout.isatty()' – Nifle

+0

के लिए मिलता है, यह भी अच्छा है कि आउटपुट एक टीटी नहीं है, लेकिन इस मामले के लिए ओवरराइड करना अच्छा है, लेकिन आप अभी भी रंग चाहते हैं - कहें कि आप सिर्फ sed या grep –

+0

'unbuffer' के साथ लाइनों को फ़िल्टर कर रहे हैं, ऐसा कर सकते हैं, इसलिए यदि कोई ओवरराइड नहीं है तो आप अटक नहीं गए हैं। –

5

सभी प्रमुख रंग कोड https://www.siafoo.net/snippet/88

+2

इस वेबसाइट का सुरक्षा प्रमाणपत्र समाप्त हो गया है। क्या कोई यह सत्यापित कर सकता है कि यह एक सुरक्षित वेबसाइट है? – BlackVegetable

+1

@ ब्लैकवेजटेबल, हाँ, यह पहले जैसा दिखता है। इसके अलावा, यदि आप चाहें तो इसे [HTTP] (http://www.siafoo.net/snippet/88) देख सकते हैं। प्रमाण पत्र के बारे में उन्हें बताने के लिए मैं उनसे संपर्क करूंगा। –

+0

भले ही आप इसे भरोसा करते हैं, @BlackVegetable, आपको प्रॉक्सी त्रुटि –

4

curses में दिया जाता है आप टर्मिनल के प्रकार है कि इस्तेमाल किया जा रहा के लिए ठीक से रंगों का उपयोग करने की अनुमति देगा।

-3

पर एक नजर है यह इतने पर करने के लिए सरल है एक पीसी: विंडोज ओएस: ओएस एक कमांड भेजें पाठ बदलने के लिए: आयात ओएस

os.system('color a') #green text 
print 'I like green' 
raw_input('do you?') 
+5

यह पूरे टर्मिनल के लिए वैश्विक स्तर पर रंग सेट करता है, न कि कुछ वर्णों के लिए। – Helgi

+0

स्पाइडर कंसोल या स्पाइडर आईपीथन कंसोल में बिल्कुल काम नहीं करता है। – Joooeey

8

मैं बस बहुत लोकप्रिय पुस्तकालय clint का वर्णन किया। टर्मिनल पर आउटपुट रंग देने के अलावा इसमें और अधिक सुविधाएं हैं।

जिस तरह से यह मैक, लिनक्स और विंडोज टर्मिनलों का समर्थन करता है।

स्थापित (उबंटू में)

pip install clint 

कुछ स्ट्रिंग के लिए रंग जोड़ने के लिए

colored.red('red string') 

उदाहरण::

यहाँ यह का उपयोग करने का उदाहरण है के लिए उपयोग करना रंग आउटपुट (django कमांड शैली)

from django.core.management.base import BaseCommand 
from clint.textui import colored 


class Command(BaseCommand): 
    args = '' 
    help = 'Starting my own django long process. Use ' + colored.red('<Ctrl>+c') + ' to break.' 

    def handle(self, *args, **options): 
     self.stdout.write('Starting the process (Use ' + colored.red('<Ctrl>+c') + ' to break)..') 
     # ... Rest of my command code ... 
संबंधित मुद्दे