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


Posted in Python onSeptember 27, 2013

 随手google??幌拢??旧隙加?elect实现非阻塞监听,但问题是,监听的是用select之后是不能像getchar()那样,即时收到单个字符的输入,必须要等待回车。

    经过努力不怠??oogle... [好吧,还是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中yield生成器的用法
Aug 05 Python
Python编程中time模块的一些关键用法解析
Jan 19 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
Django如何配置mysql数据库
May 04 Python
pandas通过loc生成新的列方法
Nov 28 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
Python Celery多队列配置代码实例
Nov 22 Python
如何将 awk 脚本移植到 Python
Dec 09 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
Jan 08 Python
详解解决jupyter不能使用pytorch的问题
Feb 18 Python
用Python脚本生成Android SALT扰码的方法
Sep 18 #Python
python pickle 和 shelve模块的用法
Sep 16 #Python
Python版的文曲星猜数字游戏代码
Sep 02 #Python
pytyon 带有重复的全排列
Aug 13 #Python
python不带重复的全排列代码
Aug 13 #Python
python在多玩图片上下载妹子图的实现代码
Aug 13 #Python
python实现的一只从百度开始不断搜索的小爬虫
Aug 13 #Python
You might like
Memcache 在PHP中的使用技巧
2010/02/08 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
javascript常用方法汇总
2014/12/02 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
python检测lvs real server状态
2014/01/22 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python实现图片识别加翻译功能
2019/12/26 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
python函数超时自动退出的实操方法
2020/12/28 Python
python中pivot()函数基础知识点
2021/01/03 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
成品仓管员工作职责
2013/12/29 职场文书
财务会计专业求职信范文
2013/12/31 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis