2017-02-26 80 views
2

我知道我不能枚举()上sys.stdin,但我必须做这样的事情没有记忆读取整个输入:环路上sys.stdin

for i, line in enumerate(sys.stdin): 
    line = line.split() 
    if sys.stdin[i][0]=='something': 
     foo(sys.stdin[i][0]) 
    else: 
     foo(sys.stdin[i+1][0]) 

那么,怎样才能在迭代sys.stdin没有读取所有内容?

+0

什么是'线路'?我在'line'上看不到任何动作。 – Arman

+0

sys.stdin [i] [0]类似于[0]行 – salvaz

回答

0

您可以使用readline()来获得一行一行sys.stdin。如果是在发电机内部,则可以构造一个简单的for环路:

def read_stdin(): 
    readline = sys.stdin.readline() 
    while readline: 
     yield readline 
     readline = sys.stdin.readline() 

for line in read_stdin(): 
    line = line.split() 
    print(line)