Formatted text in Linux Terminal using Python

PythonProgrammingServer Side Programming

In this section, we will see how to print formatted texts in Linux terminal. By formatting, we can change the text color, style, and some special features.

Linux terminal supports some ANSI escape sequences to control the formatting, color and other features. So we have to embed some bytes with the text. So when the terminal is trying to interpret them, those formatting will be effective.

The general syntax of ANSI escape sequence is like below −

\x1b[A;B;C
  • A is the Text Formatting Style
  • B is the Text Color or Foreground Color
  • C is the Background Color

There are some Predefined values for A, B and C. These are like below.

The Text Formatting Style (Type A)

Values Style
1 Bold
2 Faint
3 Italic
4 Underline
5 Blinking
6 First Blinking
7 Reverse
8 Hide
9 Strikethrough

The Color Code for type B and C.

Values(B) Values(c) Style
30 40 Black
31 41 Red
32 42 Green
33 43 Yellow
34 44 Blue
35 45 Magenta
36 46 Cyan
37 47 White

Example code

class Terminal_Format:
   Color_Code = {'black' :0, 'red' : 1, 'green' : 2, 'yellow' : 3, 'blue' : 4, 'magenta' : 5, 'cyan' : 6, 'white' : 7}
   Format_Code = {'bold' :1, 'faint' : 2, 'italic' : 3, 'underline' : 4, 'blinking' : 5, 'fast_blinking' : 6, 'reverse' : 7, 'hide' : 8, 'strikethrough' : 9}
   def __init__(self): #reset the terminal styling at first
      self.reset_terminal()
   def reset_terminal(self): #Reset the properties
      self.property = {'text_style' : None, 'fg_color' : None, 'bg_color' : None}
      return self
   def config(self, style = None, fg_col = None, bg_col = None): #Set all properties
      return 
   self.reset_terminal().text_style(style).foreground(fg_col).background(bg_col)
   def text_style(self, style): #Set the text style
      if style in self.Format_Code.keys():
         self.property['text_style'] = self.Format_Code[style]
      return self
   def foreground(self, fg_col): #Set the Foreground Color
      if fg_colinself.Color_Code.keys():
         self.property['fg_color'] = 30 + self.Color_Code[fg_col]
      return self
   def background(self, bg_col): #Set the Background Color
      if bg_colinself.Color_Code.keys():
         self.property['bg_color'] = 40 + self.Color_Code[bg_col]
      return self
   def format_terminal(self, string):
      temp = [self.property['text_style'],self.property['fg_color'], self.property['bg_color']]
      temp = [ str(x) for x in temp if x isnotNone ]
      # return formatted string
   return'\x1b[%sm%s\x1b[0m' % (';'.join(temp), string) if temp else string
   def output(self, my_str):
      print(self.format_terminal(my_str))

Output

Linux Terminal

To run the Script, we should open the Python shell in Terminal, and after that we will import the class from the script.

After creating an object of that class, we have to configure to get the desired result. Each time when we want to change the terminal setting, we have to configure it using config() function.

raja
Published on 23-Nov-2018 17:54:41
Advertisements