Linux&Dos终端彩色打印

#! /usr/bin/env python
# -*- coding: utf-8 -*-

################################################################################
#
# Copyright (c) 2014 Baidu.com, Inc. All Rights Reserved
#
################################################################################

"""
Windows命令行彩色输出
@authors    :   guoxiaohui01<[email protected]>
@copyright  :   baidu
@date       :   2014-10-09
@version    :   1.0.0.0
"""

import ctypes

class CWinColor(object):
    ‘‘‘
    Windows平台彩色输出
    ‘‘‘    
    @staticmethod
    def color_print(print_text, color_type):
        """
        彩色打印 (红)+(绿)=(黄)(蓝)+(绿)=(青)(红)+(蓝)=(品红)
        输入:
            color_type: red|green|blue|yellow|cyan|pink
        """
        STD_INPUT_HANDLE = -10
        STD_OUTPUT_HANDLE= -11
        STD_ERROR_HANDLE = -12

        #前景字体
        FOREGROUND_BLUE = 0x01
        FOREGROUND_GREEN = 0x02
        FOREGROUND_RED = 0x04
        FOREGROUND_INTENSITY = 0x08

        #背景
        BACKGROUND_BLUE = 0x10
        BACKGROUND_GREEN= 0x20
        BACKGROUND_RED = 0x40 
        BACKGROUND_INTENSITY = 0x80

        color_red = FOREGROUND_RED
        color_green = FOREGROUND_GREEN
        color_blue = FOREGROUND_BLUE

        color_yellow = FOREGROUND_GREEN | FOREGROUND_RED 
        color_cyan = FOREGROUND_BLUE | FOREGROUND_GREEN
        color_pink = FOREGROUND_RED | FOREGROUND_BLUE

        intensity = FOREGROUND_INTENSITY

        std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
        
        if (color_type == "red"):
            ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color_red | intensity)
        if (color_type == "green"):
            ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color_green | intensity)
        if (color_type == "blue"):
            ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color_blue | intensity)        

        if (color_type == "yellow"):
            ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color_yellow | intensity)
        if (color_type == "cyan"):
            ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color_cyan | intensity)
        if (color_type == "pink"):
            ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color_pink | intensity)

        print print_text

        ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color_red | color_blue | color_green)

def demo():
    """
    测试用例
    """
    CWinColor.color_print("这是红色".decode("UTF8").encode("GBK"), "red")
    CWinColor.color_print("这是绿色".decode("UTF8").encode("GBK"), "green")
    CWinColor.color_print("这是蓝色".decode("UTF8").encode("GBK"), "blue")
    CWinColor.color_print("这是黄色".decode("UTF8").encode("GBK"), "yellow")
    CWinColor.color_print("这是粉色".decode("UTF8").encode("GBK"), "pink")

if __name__ == "__main__":
    demo()

实际使用时,如果要兼容Linux的彩色打印,可这样:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys

if sys.platform.startswith("win"):
    import win_color
    print_red = lambda (input):win_color.CWinColor.color_print(input, "red")
    print_green = lambda (input):win_color.CWinColor.color_print(input, "green")
    print_blue = lambda (input):win_color.CWinColor.color_print(input, "blue") 
    print_yellow = lambda (input):win_color.CWinColor.color_print(input, "yellow")
    print_cyan = lambda (input):win_color.CWinColor.color_print(input, "cyan") 
    print_pink = lambda (input):win_color.CWinColor.color_print(input, "pink") 
else:
    import termcolor
    print_red = lambda (input):termcolor.cprint(input, ‘red‘, attrs=[‘bold‘])
    print_blue = lambda (input):termcolor.cprint(input, ‘blue‘, attrs=[‘bold‘]) 
    print_green = lambda (input):termcolor.cprint(input, ‘green‘, attrs=[‘bold‘])
    print_yellow = lambda (input):termcolor.cprint(input, ‘yellow‘, attrs=[‘bold‘])
    print_cyan = lambda (input):termcolor.cprint(input, ‘cyan‘, attrs=[‘bold‘]) 
    print_pink = lambda (input):termcolor.cprint(input, ‘magenta‘, attrs=[‘bold‘])

print_pink("pink")
print_green("green")
print_yellow("yellow")
print_red("red")
print_cyan("cyan")
print_blue("blue")

效果如下:


Linux&Dos终端彩色打印

时间: 2025-01-04 14:08:29

Linux&Dos终端彩色打印的相关文章

Linux终端彩色打印+终端进度条【转】

转自:https://my.oschina.net/jcseg/blog/178047 开发的一个应用程序选择了终端界面, 为了使软件稍微好看些, 研究下Linux终端的彩色打印, 并且基于这个彩色打印实现了几种进度条, 在此总结下: (更多的是觉得这个东西挺好玩的... ) 一. Linux终端色彩打印: 1. 属性介绍:  (1). 来自网络的ANSI属性控制码: \033[0m                 关闭所有属性 \033[1m                 设置高亮度 \03

Linux下实现进度条并且彩色打印

Linux下实现进度条并彩色打印 一.为什么要实现一个进度条? 首先就是简单 ( ^_^ ) 其次就是理解以下几个知识点: 1. ' \r ' 与 '  \n ' 的区别 先来看下什么是缓冲区:暂时存放输入输出信息的地方 \r:将要输入输出的信息会覆盖缓冲区原有的信息 \n:先进行输入输出信息,再换行,最后刷新缓冲区 2. usleep函数 作用:把调用该函数的线程挂起一段时间,单位是微秒 头文件:#include <unistd.h> 语法:void usleep( int micro_se

如何在终端中打印带颜色的文本

echo命令 echo是终端下最常用的命令之一,用于在显示器上显示一段文字.一般格式为: echo [ -option ] 字符串 它有2个常用的选项,一个是-n,另一个是-e,下面的图就是 man echo 的结果: echo将字符串输出后是会自动换行的,如果不想换行就需要加上-n选项. -e的作用是强大的,想要输出有颜色的文字就不得不用借助于-e了.为什么要带颜色?看看下图就知道了 都是毛大头,快速辨别的方法就是看数字和颜色.如若看不到数字,单看颜色也能一眼辨别. -e:启用反斜线控制字符的

Linux常用终端快捷键

UNIX程序员对键盘以及快捷键的设置都遵循一个标准:"手移动最少的距离,作更多的操作." 所有的类UNIX的终端上都有一些快捷键Ctrl+n = 下,Ctrl+b = 左,Ctrl+f = 右,Ctrl+p = 上, Ctrl+h = 退格,这几个是都可以用. ctrl + l - 清屏 相当于命令clear,另一个清屏命令是reset ctrl + c - 终止命令 ctrl + d - 退出 shell,好像也可以表示EOF ctrl + z - 将当前进程置于后台,fg还原. c

linux的终端,网络虚拟终端,伪终端

linux的终端,网络虚拟终端,伪终端 转自:http://www.xuebuyuan.com/877887.html Linux上许多网络服务应用,如l2tp.pptp.telnet,都用到了伪终端.有朋友在问这方面的概念,把偶知道的写下来,以供讨论. 一.终端要理解伪终端(Pseudo Terminal),先来看看什么是“终端”(Terminal). 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备. 1.串行端口终端(/dev/ttySx)串行端口终端(Seria

linux下终端11选5平台出租常用命令和vi命令修改文件及保存的使用方法

首先11选5平台出租haozbbs.comQ1446595067介绍一下Ubuntu下各个目录的一般作用: /这就是根目录,一台电脑有且只有一个根目录,所有的文件都是从这里开始的.举个例子:当你在终端里输入"/home",你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录./root系统管理员(root user)的目录.至于系统管理员的权限有多大我这里就不在废话了.因此,请小心使用root帐号./boot系统启动文件,所有与系统启动有关的文件都保存在这里 . /bin 这

linux下终端使用有道翻译

linux下面使用终端,有的时候需要查找一个单词,都需要打开浏览器通过网页来查找单词,这样效率会会非常的繁琐,并且也会降低工作效率. 之前刚开始看python文档的时候,看过别人说的一个用python写的在终端下查单词的脚本,当时没记录下来,后来也没找到. 今天本来是想解决我网站的显示的问题,但是想到这个不做了就感觉哪里不对,一股强迫症的感觉.. 自己用python写了一个脚本,用的是有道翻译的api,感谢有道. 使用方法为,python youdao.py  word  ,单词 word为你要

[Linux]DOS 和 Linux 常用命令的对比

许多在 shell 提示下键入的 Linux 命令都与你在 DOS 下键入的命令相似.事实上,某些命令完全相同. 本附录提供了 Windows 的 DOS 提示下的常用命令以及在 Linux 中与它们等同的命令.附录中还提供了如何在 Linux shell 提示下使用这些命令的简单实例.请注意,这些命令通常有许多选项,要进一步学习每一个命令,请阅读相关的说明书(man)页(例如,在 shell 提示下键入 man ls 就可以读到关于 ls 命令的信息). 命令的目的 MS-DOS Linux

linux里终端安转视频播放器的操作及显示

[[email protected] ~]$ mplayerbash: mplayer: command not found[[email protected] ~]$ yum list | grep mplayer^C^C Exiting on Broken Pipe [[email protected] ~]$ [[email protected] ~]$ SUbash: SU: command not found[[email protected] ~]$ su密码:su: 密码不正确[[