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实现的去除win下文本文件头部BOM的代码
Feb 10 Python
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
python实现简单温度转换的方法
Mar 13 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
Python2中文处理纪要的实现方法
Mar 10 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
Django如何自定义分页
Sep 25 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
Python 实现域名解析为ip的方法
Feb 14 Python
深入了解Python 变量作用域
Jul 24 Python
python绘图subplots函数使用模板的示例代码
Apr 30 Python
pytorch 运行一段时间后出现GPU OOM的问题
Jun 02 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
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
如何使用php输出时间格式
2013/08/31 PHP
smarty半小时快速上手入门教程
2014/10/27 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
HTML Dom与Css控制方法
2010/10/25 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
详解如何使用Python编写vim插件
2017/11/28 Python
python实现log日志的示例代码
2018/04/28 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
python远程邮件控制电脑升级版
2019/05/23 Python
django中cookiecutter的使用教程
2020/12/03 Python
python模块内置属性概念及实例
2021/02/18 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
柏林通行证:Berlin Pass
2018/04/11 全球购物
积极分子思想汇报
2014/01/04 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
文化产业实施方案
2014/06/07 职场文书
学校开学标语
2014/10/06 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL