2011-10-15 49 views
0

我想知道如何从python中的一行读取140个或更少的字符。用户可以输入刚好140个字符,然后换行符,或者小于140的换行符。看起来raw_input()没有限制,并且sys.stdin.read(140)将会读取,直到它遇到140个字符,而不管换行符。从python stdin中读取140个或更少的字符

编辑:我会如何阻止它在140个字符?只是一个难以容忍的输入允许。无法输入更多。

想法?

最大

+0

如果用户在换行符之前输入超过140个字符,该怎么办? –

+0

打印'“错误:超过140个字符%d”%(140-len(a))'其中'a'是输入 – tekknolagi

+2

要生成错误消息,您需要阅读整行。 –

回答

1

通常情况下,标准输入是行缓冲,这意味着程序运行时没有被告知哪些用户键入,直到用户按Enter键(这允许用户使用行编辑命令,如退格,而不需要你的程序做任何额外的事情)。但是,可以将终端更改为“原始”模式,以便每次用户按下某个键时都会通知程序。然后,您的程序可以采取适当的方式对该按键进行操作。在这种情况下,您必须自行实施行编辑,例如退格键。

一个高级别的方法是使用curses库。

+0

so'curses.filter()'?想法? – tekknolagi

+0

见编辑?可能会帮助 – tekknolagi

+0

我怎么用'curses.raw()'和'curses.cbreak()'来做到这一点? – tekknolagi

3

ip = sys.stdin.readline() 
if len(ip) > 140: 
    print "error: over 140 chars" 
    sys.exit() 
+0

除了我宁愿不截断: -/ – tekknolagi

+0

哦,有趣。谢谢! – tekknolagi

+0

除外:请参阅我的编辑 – tekknolagi