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 相关文章推荐
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
python儿童学游戏编程知识点总结
Jun 03 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
Django Rest framework认证组件详细用法
Jul 25 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 Python
Django利用AJAX技术实现博文实时搜索
May 06 Python
Python Pandas解析读写 CSV 文件
Apr 11 Python
Python时间操作之pytz模块使用详解
Jun 14 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
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
PHP中上传大体积文件时需要的设置
2006/10/09 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
AngularJS内置指令
2015/02/04 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
Vue制作Todo List网页
2017/04/26 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
python获取多线程及子线程的返回值
2017/11/15 Python
Python中的 enum 模块源码详析
2019/01/09 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
印度在线杂货店:bigbasket
2018/08/23 全球购物
RetroStage德国:复古服装
2019/02/03 全球购物
初中学校对照检查材料
2014/08/19 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
三峡大坝导游词
2015/01/31 职场文书
2015年安全月活动总结
2015/03/26 职场文书
大学生敬老院活动总结
2015/05/07 职场文书