Python 命令行非阻塞输入的小例子

 更新时间:2013年09月27日 16:27:25   作者:  
很久很久以前,系windows平台下,用C语言写过一款贪食蛇游戏,cmd界面,用kbhit()函数实现非阻塞输入。系windows平台下用python依然可以调用msvcrt.khbit实现非阻塞监听。但系喺linux下面就冇呢支歌仔唱

 随手google咗一下,基本上都用select实现非阻塞监听,但问题是,监听的是用select之后是不能像getchar()那样,即时收到单个字符的输入,必须要等待回车。

    经过努力不怠咁google... [好吧,还是google。没有google什么也做不了。]

    最后系一大堆英文资料入面,拼凑出如下可用的代码,实现了单个字符非阻塞输入。

    show code below.

复制代码 代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
""" python non blocking input
"""
__author__ = 'Zagfai'
__version__=  '2013-09-13'

import sys
import select
from time import sleep
import termios
import tty

old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())
while True:
    sleep(.001)
    if select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []):
        c = sys.stdin.read(1)
        if c == '\x1b': break
        sys.stdout.write(c)
        sys.stdout.flush()
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)

print raw_input('123:')


其中用到两个模块,分别系termios、tty,用来控制tty的输入模式,由行输入变为单字符。

    END.

相关文章

  • python实现进程间通信简单实例

    python实现进程间通信简单实例

    这篇文章主要介绍了python实现进程间通信简单实例,需要的朋友可以参考下
    2014-07-07
  • python实现批量监控网站

    python实现批量监控网站

    本文给大家分享的是一个非常实用的,python实现多网站的可用性监控的脚本,并附上核心点解释,有相同需求的小伙伴可以参考下
    2016-09-09
  • Python中异常的捕获与处理详解

    Python中异常的捕获与处理详解

    这篇文章主要介绍了Python中异常的捕获与处理详解,调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正,需要的朋友可以参考下
    2023-08-08
  • 浅谈Python浅拷贝、深拷贝及引用机制

    浅谈Python浅拷贝、深拷贝及引用机制

    本篇文章主要介绍了Python浅拷贝、深拷贝及引用机制,详细的介绍了浅拷贝、深拷贝的介绍和区别,有兴趣的可以了解一下。
    2016-12-12
  • 使用python爬取B站千万级数据

    使用python爬取B站千万级数据

    B站我想大家都熟悉吧,其实 B 站的爬虫网上一搜一大堆。不过纸上得来终觉浅,绝知此事要躬行,我码故我在。
    2018-06-06
  • Python3爬虫中Selenium的用法详解

    Python3爬虫中Selenium的用法详解

    在本篇内容里小编给大家分享了关于Python3爬虫中Selenium的用法详解内容,需要的朋友们可以参考下。
    2020-07-07
  • python爬虫selenium模块详解

    python爬虫selenium模块详解

    这篇文章主要介绍了python爬虫selenium模块详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • python中关于py文件之间相互import的问题及解决方法

    python中关于py文件之间相互import的问题及解决方法

    这篇文章主要介绍了python中关于py文件之间相互import的问题,本文用一个例子演示下如何解决python中循环引用的问题,需要的朋友可以参考下
    2022-02-02
  • Python批量处理PDF图片的操作指南(插入、压缩、提取、替换、分页、旋转、删除)

    Python批量处理PDF图片的操作指南(插入、压缩、提取、替换、分页、旋转、删除)

    图片是 PDF 文档的核心元素之一,它们不仅能够增强文档的视觉吸引力,还能有效传达信息,帮助读者更好地理解内容和主题,在实际操作中,我们常需要对PDF中的图片进行多种处理,这篇文章将详细介绍如何使用Python在PDF中实现图片插入、提取、替换、压缩等操作
    2025-04-04
  • PyCM多类别混淆矩阵分析python库功能使用探究

    PyCM多类别混淆矩阵分析python库功能使用探究

    这篇文章主要为大家介绍了python编写的PyCM多类混淆矩阵库,用于多类别混淆矩阵分析,帮助用户从不同角度评价分类模型的表现,这些指标包括但不限于准确率、召回率、F1分数、Kappa 统计量等,支持二分类、多分类及多标签分类问题
    2024-01-01

最新评论