我正在制作一个算法,用于从键盘读取输入,并将其存储在名为的消息中,然后将此变量写入文件。但是,无论用户何时输入,如果他按ESC键,我都希望执行停止,没有任何错误。
假设代码:
message = raw_input()
我有什么补充?所以如果我在这样一个句子中间:
My name is th
而我打ESC,它停止?
pythonpypy3,344
创建24 10月. 13
raw_input does not work that that。它会等待,直到用户按下Enter键将用户写入变量消息的任何内容传递给用户。你需要一些能够监控每个按键的东西,然后如果按键是ESC键,它可以执行退出程序等操作。如果您使用的是Linux,请查看kbhit。 –jramirez24 10月. 132013-10-24 00:28:34
1 回答
排序:
有效
最旧
投票
有没有办法做到这一点与正常输入。raw_input一次读取整行。
在某些(很少)的情况下,你可以这样做:
message = '' while True: ch = sys.stdin.read(1) if ch == '\x1b'exit(0) elif ch == '\n'break message += ch
但总的来说,这是不行的。例如,在一个典型的Unix系统上,sys.stdin将被行缓冲,并且甚至可能通过像readline这样的库来馈送,以允许用户在他前进时编辑。或者,如果您在IDLE内部运行该程序,则根本无法读取stdin;raw_input通过弹出一个对话框询问输入,但你的代码不能这样做。
您可以在不同情况下的不同平台上以不同方式解决该问题。