Python 命令行非阻塞输入的小例子
随手google咗一下,基本上都用select实现非阻塞监听,但问题是,监听的是用select之后是不能像getchar()那样,即时收到单个字符的输入,必须要等待回车。
经过努力不怠咁google... [好吧,还是google。没有google什么也做不了。]
最后系一大堆英文资料入面,拼凑出如下可用的代码,实现了单个字符非阻塞输入。
#!/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脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2] test.py: import sys print "脚本名:", sys.argv[0] for i in rang
-
python命令行参数解析OptionParser类用法实例
本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from optparse import OptionParser parser = OptionParser(usage="usage:%prog [optinos] filepath") parser.add_option("-t", "--timeout", action = "store", type =
-
python在windows命令行下输出彩色文字的方法
本文实例讲述了python在windows命令行下输出彩色文字的方法.分享给大家供大家参考.具体分析如下: 默认情况下python在控制台输出的文字信息都是黑白的,如果能将文字做成彩色的输出,输出效果会更完美,也很酷,不是吗,下面是一段演示代码,这段代码封装了一个color类用来输出带颜色的文字,只要调用该类里面的相关方法就可以了,非常简单. 复制代码 代码如下: #!/usr/bin/env python #encoding: utf-8 import ctypes STD_INPUT_HAN
-
更改Python命令行交互提示符的方法
一.定制Python的交互提示符 Python的默认交互提示符为">>>",但它是可以定制的. Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此文件中变量指定的执行代码. 一些Linux发布包提供了缺省的启动脚本,一般存放在其home目录,名为.pythonstartup."Tab完成"和"命令历史"这两个功能增强了提示符应用,两者都基于readline模块. 如果没有.pythonstartup文件,可
-
python获取从命令行输入数字的方法
本文实例讲述了python获取从命令行输入数字的方法.分享给大家供大家参考.具体如下: #---------------------------------------- # Name: numerical_input.py # Author: Kevin Harris # Last Modified: 02/13/04 # Description: This Python script demonstrates # how to get numerical input # from the c
-
python 获取命令行参数 函数
import sys print sys.argv print len(sys.argv) #参数个数 print sys.argv[1] #第一个参数 print sys.argv[2]
-
Python getopt模块处理命令行选项实例
getopt模块用于抽出命令行选项和参数,也就是sys.argv命令行选项使得程序的参数更加灵活.支持短选项模式和长选项模式例如 python scriptname.py -f 'hello' --directory-prefix=/home -t --format 'a' 'b' 复制代码 代码如下: import getopt, sysshortargs = 'f:t'longargs = ['directory-prefix=', 'format']opts, args = getopt
-
Python命令行参数解析模块optparse使用实例
示例 复制代码 代码如下: from optparse import OptionParser [...] def main(): usage = "usage: %prog [options] arg" parser = OptionParser(usage) parser.add_option("-f", "--file", dest="filename",
-
python实现定制交互式命令行的方法
Python的交互式命令行可通过启动文件来配置. 当Python启动时,会查找环境变量PYTHONSTARTUP,并且执行该变量中所指定文件里的程序代码.该指定文件名称以及地址可以是随意的.按Tab键时会自动补全内容和命令历史.这对命令行的有效增强,而这些工具则是基于readline模块实现的(这需要readline程序库辅助实现). 此处为大家举一个简单的启动脚本文件例子,它为python命令行添加了按键自动补全内容和历史命令功能. [python@python ~]$ cat .python
-
python在命令行下使用google翻译(带语音)
说明 1. 使用google翻译服务获得翻译和语音;2. 使用mplayer播放获得的声音文件,因此,如果要播放语音,请确保PATH中能够找到mplayer程序,如果没有mplayer,请将use_tts设置为False运行.即:main(use_tts=False)3. 退出程序,输入"x",回车. 复制代码 代码如下: #! /usr/bin/env python#coding=utf-8 import requests def translate(words): impor
-
Python实现获取命令行输出结果的方法
本文实例讲述了Python实现获取命令行输出结果的方法.分享给大家供大家参考,具体如下: Python获取命令行输出结果,并对结果进行过滤找到自己需要的! 这里以获取本机MAC地址和IP地址为例! # coding: GB2312 import os, re # execute command, and return the output def execCmd(cmd): r = os.popen(cmd) text = r.read() r.close() return text # wri
随机推荐
- document.createElement()用法
- JavaScript 中文转拼音实现代码 有些bug
- 用json方式实现在 js 中建立一个map
- Tomcat正常启动,访问所有页面均报404异常,404异常总结分析
- Java8中的lambda表达式入门教程
- asp.net如何在图片上加水印文字具体实现
- 关于Mysql查询带单引号及插入带单引号字符串问题
- 控制文字内容的显示与隐藏示例
- java分页拦截类实现sql自动分页
- SQL注入之基于布尔的盲注详解
- IE与firefox下Dhtml的一些区别小结
- 5分钟了解MySQL5.7中union all用法的黑科技
- 清除js缓存的多种方法总结
- Windows 不能让您登录,因为不能加载您的配置文件 详细信息 - 拒绝访问
- IIS7完全攻略之失败请求跟踪配置
- 备案常见问题总结
- IOS中多手势之间的冲突和解决办法
- 讲解Android中的Widget及AppWidget小工具的创建实例
- Android Recyclerview实现水平分页GridView效果示例
- C++设计模式之模板方法模式
