python 輸出顏色與樣式

2021-09-01 08:17:19 字數 3509 閱讀 2679

import os

#ported from

def print_nt(foreground, newline, *kw):

from ctypes import windll, structure, c_short, c_uint, byref

#+8 means highlight

cc_map =

closehandle = windll.kernel32.closehandle

getstdhandle = windll.kernel32.getstdhandle

getconsolescreenbufferinfo = windll.kernel32.getconsolescreenbufferinfo

setconsoletextattribute = windll.kernel32.setconsoletextattribute

std_output_handle = -11

class coord(structure):

_fields_ = [('x', c_short), ('y', c_short)]

class small_rect(structure):

_fields_ = [('left', c_short),

('top', c_short),

('right', c_short),

('bottom', c_short),

]class console_screen_buffer_info(structure):

_fields_ = [('dwsize', coord),

('dwcursorposition', coord),

('wattributes', c_uint),

('srwindow', small_rect),

('dwmaximumwindowsize', coord),

]if foreground in cc_map:

hconsole = getstdhandle(std_output_handle)

scrinfo = console_screen_buffer_info()

getconsolescreenbufferinfo(hconsole, byref(scrinfo))

oldcolor = scrinfo.wattributes

setconsoletextattribute(hconsole, cc_map[foreground])

for t in kw: print t,

if newline: print

if foreground in cc_map:

setconsoletextattribute(hconsole, oldcolor)

#code source:

def print_inx(foreground, newline, *kw):

cc_map =

if foreground in cc_map:

for t in kw:

print '\033[' + cc_map[foreground] + 'm\033[0m'.format(t),

else:

for t in kw: print t,

if newline: print

def print_colorful(foreground, newline, *kw):

try:

if foreground == 'darkyellow':

foreground = 'brown'

if os.name == 'nt':

print_nt(foreground, newline, *kw)

else:

print_inx(foreground, newline, *kw)

except:

for t in kw: print t,

if newline: print

if __name__ == '__main__':

#print_colorful('red', 'red')

for c in ['red', 'green', 'cyan', 'blue', 'yellow', 'magenta', 'white']:

print_colorful(c, true, 'test for ' + c)

print_colorful('dark' + c, true, 'test for dark' + c)

我們知道在命令列下,python輸出的字串顏色和一般字元相同,例如windows為黑背景白色字元。

若我們想強調某些字元,可以利用下面的**將要強調部分變為red色。這個**在linux下可以,在windows下好像不能用。原理未知。

def inred( s ):

return"%s[31;2m%s%s[0m"%(chr(27), s, chr(27))

print'this is a very '+inred('important')+' thing'

內容: 格式: echo "\033[字背景顏色;字型顏色m字串\033[0m"

例如:

echo "\033[41;36m something here \033[0m"

其中41的位置代表底色, 36的位置是代表字的顏色

那些ascii code 是對顏色呼叫的始末.

\033[ ; m …… \033[0m

字背景顏色範圍:40----49

40:黑

41:深紅

42:綠

43:黃色

44:藍色

45:紫色

46:深綠

47:白色

字顏色:30-----------39

30:黑

31:紅

32:綠

33:黃

34:藍色

35:紫色

36:深綠

37:白色

*********************************************==ansi控制碼的說明

\33[0m 關閉所有屬性

\33[1m 設定高亮度

\33[4m 下劃線

\33[5m 閃爍

\33[7m 反顯

\33[8m 消隱

\33[30m -- \33[37m 設定前景色

\33[40m -- \33[47m 設定背景色

\33[na 游標上移n行

\33[nb 游標下移n行

\33[nc 游標右移n行

\33[nd 游標左移n行

\33[y;xh設定游標位置

\33[2j 清屏

\33[k 清除從游標到行尾的內容

\33[s 儲存游標位置

\33[u 恢復游標位置

\33[?25l 隱藏游標

\33[?25h 顯示游標

python 輸出顏色與樣式

我們知道在命令列下,python輸出的字串顏色和一般字元相同,例如windows為黑背景白色字元。若我們想強調某些字元,可以利用下面的 將要強調部分變為red色。這個 在linux下可以,在windows下好像不能用。原理未知。def inred s return s 31 2m s s 0m ch...

python 輸出顏色與樣式的方法

上次遇到這個問題就想寫下來,其實當時我也不怎麼會,老師說這個東西不需要理解,只需要死記硬背,寫的多了就記住了,所以今天蒐集了幾篇文章,加上自己的理解,寫下了這篇python 輸出顏色的樣式與方法的文章,一方面想自己記錄下自己的理解,另一方面想用自己通俗的理解送給需要的盆友。在寫python 程式 的...

python輸出帶顏色字型

在python開發的過程中,經常會遇到需要列印各種資訊。海量的資訊堆砌在控制台中,就會導致資訊都混在一起,降低了重要資訊的可讀性。這時候,如果能給重要的資訊加上字型顏色,那麼就會更加方便使用者閱讀了。當然了,控制台的展示效果有限,並不能像前段一樣炫酷,只能做一些簡單的設定。不過站在可讀性的角度來看,...