如何在Python中从OSX上的标准输入返回字符?

如何在Python中从OSX上的标准输入返回字符?,python,macos,input,key,getch,Python,Macos,Input,Key,Getch,对于我正在处理的Python项目,我需要告诉用户插入一个字符并以ASCII码返回其值,而无需按enter键提交键 仅当我的程序是活动应用程序时,它还必须读取输入,否则它不能执行任何操作(如Windows中的getch())。操作系统是OSX。通常,数据在换行后在stdin可用 因此,您需要将标准输入设置为“原始模式”。 下面是一个python程序,它将从原始tty读取按键。 按下16次后停止,因为Ctrl-C也未被处理 import sys import termios import tty

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


仅当我的程序是活动应用程序时,它还必须读取输入,否则它不能执行任何操作(如Windows中的
getch()
)。操作系统是OSX。

通常,数据在换行后在stdin可用

因此,您需要将标准输入设置为“原始模式”。 下面是一个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'中未定义