文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python打印彩色命令行

2023-01-31 05:17

关注

0x01.Python print color word in windows cmd console

一,set_cmd_color
#!/usr/bin/env python  
#encoding: utf-8
from ctypes import*

if __name__ =="__main__":
       windll.Kernel32.GetStdHandle.restype = c_ulong
       h = windll.Kernel32.GetStdHandle(c_ulong(0xfffffff5))
for i in range(0,16):
        windll.Kernel32.SetConsoleTextAttribute(h, i)
print"hi,insun"


调用ctypes模块 改变了cmd的text属性,cmd的基色全变了
Python打印彩色命令行 - Test - Minghacker

二,print_color_text

#!/usr/bin/env python  
#encoding: utf-8
import ctypes

STD_INPUT_HANDLE =-10
STD_OUTPUT_HANDLE=-11
STD_ERROR_HANDLE =-12

FOREGROUND_BLACK =0x0
FOREGROUND_BLUE =0x01# text color contains blue.
FOREGROUND_GREEN=0x02# text color contains green.
FOREGROUND_RED =0x04# text color contains red.
FOREGROUND_INTENSITY =0x08# text color is intensified.

BACKGROUND_BLUE =0x10# background color contains blue.
BACKGROUND_GREEN=0x20# background color contains green.
BACKGROUND_RED =0x40# background color contains red.
BACKGROUND_INTENSITY =0x80# background color is intensified.

classColor:
''' See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_api_reference.asp
   for information on Windows APIs.'''
   std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)

def set_cmd_color(self, color, handle=std_out_handle):
"""(color) -> bit
       Example: set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY)
       """
bool= ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)
returnbool

def reset_color(self):
self.set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)

def print_red_text(self, print_text):
self.set_cmd_color(FOREGROUND_RED | FOREGROUND_INTENSITY)
print print_text
self.reset_color()

def print_green_text(self, print_text):
self.set_cmd_color(FOREGROUND_GREEN | FOREGROUND_INTENSITY)
print print_text
self.reset_color()

def print_blue_text(self, print_text):
self.set_cmd_color(FOREGROUND_BLUE | FOREGROUND_INTENSITY)
print print_text
self.reset_color()

def print_red_text_with_blue_bg(self, print_text):
self.set_cmd_color(FOREGROUND_RED | FOREGROUND_INTENSITY| BACKGROUND_BLUE | BACKGROUND_INTENSITY)
print print_text
self.reset_color()

if __name__ =="__main__":
   clr =Color()
   clr.print_red_text('red')
   clr.print_green_text('green')
   clr.print_blue_text('blue')
   clr.print_red_text_with_blue_bg('background')



Python打印彩色命令行 - Test - Minghacker

0x002. Python print color word in Linux terminal

Linux的终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。

转义序列是以 ESC 开头,可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27, = 用八进制表示的 33)。

\033[显示方式;前景色;背景色m

显示方式:0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显)

前景色:30(黑色)、31(红色)、32(绿色)、 33(×××)、34(蓝色)、35(洋红)、36(青色)、37(白色)

背景色:40(黑色)、41(红色)、42(绿色)、 43(×××)、44(蓝色)、45(洋红)、46(青色)、47(白色)

\033[0m 默认

\033[1;32;40m 绿色

\033[1;31;40m 红色

print "\033[1;31;40m%s\033[0m" % " 输出红色字符"

\033[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
\033[0m          <!--采用终端默认设置,即取消颜色设置-->


You want to learn about ANSI escape sequences. Here's a brief example:

CSI="\x1B["reset=CSI+"m"print CSI+"31;40m"+"Colored Text"+ CSI +"0m"

For more info see http://en.wikipedia.org/wiki/ANSI_escape_code

For a block character, try a unicode character like \u2588:

print u"\u2588"

Putting it all together:

print CSI+"31;40m"+ u"\u2588"+ CSI +"0m"
也有人推荐termcolor模块
from termcolor import coloredprint colored('hello','red'), colored('world','green')
这些代码在windows cmd下无效



0x03.Reference:
http://www.iitshare.com/python-print-color-log.html
http://blog.csdn.net/five3/article/details/7630295
http://markmail.org/message/lk3sfc4rovfk467u
http://stackoverflow.com/questions/1328643/how-do-i-use-colour-with-windows-command-prompt-using-python
http://stackoverflow.com/questions/287871/print-in-terminal-with-colors-using-python
https://pypi.python.org/pypi/termcolor


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯