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 相关文章推荐
浅谈function(函数)中的动态参数
Apr 30 Python
python 读文件,然后转化为矩阵的实例
Apr 23 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
学习python分支结构
May 17 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
Python中函数的返回值示例浅析
Aug 28 Python
Django获取应用下的所有models的例子
Aug 30 Python
python 魔法函数实例及解析
Sep 25 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
python——全排列数的生成方式
Feb 26 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
python中threading和queue库实现多线程编程
Feb 06 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
供参考的 php 学习提高路线分享
2011/10/23 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
smarty简单分页的实现方法
2014/10/27 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
Python访问MySQL封装的常用类实例
2014/11/11 Python
python获取远程图片大小和尺寸的方法
2015/03/26 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
python unittest实现api自动化测试
2018/04/04 Python
python获取地震信息 微信实时推送
2019/06/18 Python
pytorch 求网络模型参数实例
2019/12/30 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
python代码实现图书管理系统
2020/11/30 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
RIP版本1跟版本2的区别
2013/12/30 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
安全生产责任书范本
2014/04/15 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android