为什么我不能连续两次在sys.stdin中做一个循环? (蟒蛇)

时间:2016-03-29 15:37:57

标签: python python-3.x stdin sys

首先我需要获得行数,所以我这样做:

for line in sys.stdin:
    c = c + 1
print("Number of lines:" + str(c))
A = [[] for x in range(0,c)]
print(A)

但是我需要再次输入for line in sys.stdin:,因为我需要阅读输入。

它不起作用,第二次几乎就像消耗的输入一样,现在是空的。

2 个答案:

答案 0 :(得分:3)

将stdin输入保存在变量中:

lines = sys.stdin.readlines()

现在,您可以根据需要循环遍历lines变量。

如果您只计算线条,则根本不需要循环;你可以说c = len(lines)

答案 1 :(得分:1)

如果要多次访问输入,则必须保存输入。第一个for循环使用不可搜索的流。

lines = sys.stdin.readlines()

如果您正在处理每一行,您可能更喜欢以下内容:

results = [foo(i) for i in sys.stdin]
print("Have {} results".format(len(results))

您还可以使用enumerate来计算:

for cnt, line in enumerate(sys.stdin, start=1):
    foo(line)

print('Saw {} lines'.format(cnt))