2011-10-15 53 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