为什么我不能连续两次在 sys.stdin 中循环? (Python)

Why can't I do a loop in sys.stdin two times in a row ? (Python)

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

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: 因为我需要读取输入。

它不起作用,第二次它几乎是因为输入被消耗,现在是空的。

将标准输入保存在变量中:

lines = sys.stdin.readlines()

现在您可以根据需要多次循环 lines 变量。

如果您只是计算行数,则根本不需要循环;你可以直接说 c = len(lines).

如果您想多次访问输入,您必须保存输入。第一个 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))