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

 随手google咗一下,基本上都用select实现非阻塞监听,但问题是,监听的是用select之后是不能像getchar()那样,即时收到单个字符的输入,必须要等待回车。

    经过努力不怠咁google... [好吧,还是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.

时间: 2025-01-02 19:34:10

Python 命令行非阻塞输入的小例子_python的相关文章

python命令行参数解析OptionParser类用法实例_python

本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from optparse import OptionParser parser = OptionParser(usage="usage:%prog [optinos] filepath") parser.add_option("-t", "--timeout", action = "store", type =

Python命令行参数解析模块optparse使用实例_python

示例 复制代码 代码如下: from optparse import OptionParser [...] def main():     usage = "usage: %prog [options] arg"     parser = OptionParser(usage)     parser.add_option("-f", "--file", dest="filename",                     

Python命令行参数解析模块getopt使用实例_python

格式 getopt(args, options[, long_options]) 1.args表示要解析的参数. 2.options表示脚本要识别的字符.字符之间用":"分隔,而且必须要以":"后结尾,例如"a:b:c:". 3.long_options是可选的,如果指定的话,可以解析长选项.形式为字符串列表,如['foo=', 'frob='].长选项要求形式为"–name=value" 4.该方法返回2个元素.第一个元素是

利用Python命令行传递实例化对象的方法_python

一.前言 在开发过程中,遇到了这样一个情况:我们需要在脚本中通过 suprocess.call 方法来启动另外一个脚本(脚本 B),当然啦,还得传递一些参数.在这些参数中,有一个需要传递的是一个实例化后的对象.我们知道,通过命令行的方式传递参数是基于字符格式的,也就是说脚本 B 只能接收到字符串格式的参数,那么如何接收启动脚本传递过来的实例化后的对象呢? 今天就来聊聊我使用的两种笨方法:使用 eval 以及使用 pickle 和 base64 模块. 方法一:使用 eval 其实在代码中使用 e

visual basic-VB命令行参数的输入问题

问题描述 VB命令行参数的输入问题 VISUAL BASIC能不能像C++一样读取命令行参数,如果可以,请问怎么读取? 解决方案 可以的,Command语句.不过你需要用Split去切分下.

.net 读取非标准配置文件的小例子

这篇文章介绍了.net 读取非标准配置文件的小例子,有需要的朋友可以参考一下   代码如下: 复制代码 代码如下: public static string Config(string key)         {             ExeConfigurationFileMap file = new ExeConfigurationFileMap();             file.ExeConfigFilename = @"ProvidersProvider.config"

Python彩色化Linux的命令行终端界面的代码实例分享_python

先看看效果: 在linux的终端中,ANSI转义序列来控制颜色 基本规则: 前面加上\033[,结尾用\033[0m重置为原来的颜色 可以在终端中输入下面这句,就可以看到输出绿色的hello. >>echo -e '\033[0;32mhello\033[0m' 其中0;32m控制颜色. 最简单的,只要把0;32m中的2改成0-7,就对应不同颜色了. 利用这点,在python中,可以这样来. #coding=utf-8 fmt = '\033[0;3{}m{}\033[0m'.format c

python在windows命令行下输出彩色文字的方法_python

本文实例讲述了python在windows命令行下输出彩色文字的方法.分享给大家供大家参考.具体分析如下: 默认情况下python在控制台输出的文字信息都是黑白的,如果能将文字做成彩色的输出,输出效果会更完美,也很酷,不是吗,下面是一段演示代码,这段代码封装了一个color类用来输出带颜色的文字,只要调用该类里面的相关方法就可以了,非常简单. 复制代码 代码如下: #!/usr/bin/env python #encoding: utf-8 import ctypes STD_INPUT_HAN

python命令行参数处理

使用argparse包来解析命令行参数: 1 #/usr/bin/python 2 #encoding=utf-8 3 4 import argparse 5 parser = argparse.ArgumentParser() 6 #parser.parse_args() 7 8 #位置参数, echo只是一个占位符而已,也可以定义参数的类型 9 parser.add_argument("arg_01", help="add one command", type=