【问题标题】:How to return a character from standard input on OS X in Python?如何在 Python 中从 OS X 上的标准输入返回字符?
【发布时间】:2014-02-02 18:23:01
【问题描述】:

对于我正在处理的 Python 项目,我需要告诉用户插入一个字符并以 ASCII 码返回其值,而无需按 Enter 键提交。

只有当我的程序是活动应用程序时,它也必须读取输入,否则它必须什么都不做(如 Windows 中的getch())。操作系统是 OS X。

【问题讨论】:

    标签: python macos input key getch


    【解决方案1】:

    通常,数据在换行后在标准输入中可用。

    因此您需要将标准输入置于“原始模式”。 这是一个 python 程序,它将从原始 tty 读取按键。 它在 16 次按下后停止,因为 Ctrl-C 也没有被处理。

    import sys
    import termios
    import tty
    
    attr = termios.tcgetattr( sys.stdin )
    tty.setraw( sys.stdin )
    
    for i in range(16) :
        d = sys.stdin.read(1)
        print ord( d[0] )
        print "\r",
    
    termios.tcsetattr( sys.stdin, termios.TCSADRAIN, attr )
    

    【讨论】:

    • 但是代码和Linux版本差不多。否则它会返回此错误:文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tty.py”,第 18 行,在 NameError: name 'TCSAFLUSH' is not定义
    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 2010-09-15
    • 1970-01-01
    • 2018-10-18
    • 2017-04-11
    • 1970-01-01
    • 2015-11-01
    • 2022-01-19
    相关资源
    最近更新 更多