前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Python不务正业 - 第一弹

用Python不务正业 - 第一弹

作者头像
用户1416054
发布2018-08-02 11:43:24
2150
发布2018-08-02 11:43:24
举报
文章被收录于专栏:JackeyGao的博客JackeyGao的博客

用Python不务正业 - 第一弹

Posted April 16, 2016

从这篇开始会做一个用Python不务正业专题, 记录Python一些一无是用但是很好玩的脚本.本期是一个终端乱弹的脚本.

效果图:

记得刚学shell的时候做过终端随机的点生成随机颜色的字符, 只为好玩和增强脚本开发技能, 下午闲来无事用python实现了, 正好学习了python的curses标准库. python curses标准库可以用来对终端定制开发, 做一些友好的终端命令。

本脚本不需要安装其他的库, 只依赖标准库, 在Python2.7 测试通过, 以下为代码:

Python

代码语言:javascript
复制
# -*- coding: utf-8 -*-
'''
File Name: mt2.py
Author: JackeyGao
mail: [email protected]
Created Time: Fri Apr 15 15:52:31 2016
'''
import os, sys
import locale
import signal
import random
import curses
import time
import traceback

locale.setlocale(locale.LC_ALL, '')
code = locale.getpreferredencoding()

stdscr = curses.initscr()
size = lambda: os.popen('stty size', 'r').read().split()

def show_point(str, x, y, colorpair=2):
    global stdscr
    try:
        stdscr.addstr(y, x, str, curses.color_pair(colorpair))
    except Exception as e:
        pass
    stdscr.refresh()

def set_window():
    '''''控制台设置'''
    global stdscr
    curses.start_color()
    curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK)
    curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK)
    curses.init_pair(3, curses.COLOR_YELLOW, curses.COLOR_BLACK)
    curses.init_pair(4, curses.COLOR_BLUE, curses.COLOR_BLACK)
    curses.init_pair(5, curses.COLOR_MAGENTA, curses.COLOR_BLACK)
    curses.init_pair(6, curses.COLOR_CYAN, curses.COLOR_BLACK)
    curses.init_pair(7, curses.COLOR_WHITE, curses.COLOR_BLACK)
    curses.noecho()
    curses.cbreak()
    stdscr.nodelay(1)

def unset_window():
    '''控制台重置'''
    global stdstr
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()

def signal_handler(signal, frame):
    sys.exit(0)

if __name__=='__main__':
    signal.signal(signal.SIGINT, signal_handler)
    try:
        set_window()
        while True:
            height, weight = size()
            y = random.randrange(0, int(height), 1)
            x = random.randrange(0, int(weight), 1)
            color = random.randrange(1, 8, 1)
            show_point('Ooo0oOo', x, y, colorpair=color)
            time.sleep(0.01)
    except Exception as e:
        pass
    finally:
        unset_window()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用Python不务正业 - 第一弹
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档