Использовать sys.stdin для сравнения 2 строк в python?

#python #python-3.x #mapreduce

#python #python-3.x #mapreduce

Вопрос:

Я использую python для выполнения домашней работы по MapReduce, которая будет использовать sys.stdin в качестве средства чтения входного файла. например :

 for line in sys.stdin:
     # compare 1st line with the 2ed line.
  

Я могу загрузить все содержимое файла в память и использовать индекс для реализации сравнения в 2 строки для примера:

 lines= open("guru99.txt","r")
for i in range(len(lines)):
    if lines[i] != lines[i-1]:
       ...
  

Мой вопрос в том, как выполнить сравнение этих 2 строк с помощью sys.stdin? В качестве файла домашнего задания «guru99.txt » он огромен, и я не могу загрузить его в память, но будет работать только способ sys.stdin.

Комментарии:

1. Можете ли вы придумать способ запомнить, какой была предыдущая строка, пока вы получаете текущую строку из цикла? Другими словами: можете ли вы придумать способ запомнить, какова текущая строка, чтобы при получении следующей строки из цикла у вас была эта строка для сравнения?

2. Принимать 2 строки ввода одновременно? Использовать next(sys.stdin)

Ответ №1:

Вы можете получить первую строку, используя next , а затем повторить оставшийся ввод.

 import sys

try:
    prev = next(sys.stdin)
except StopIteration:
    # no input
    exit()

for line in sys.stdin:
    if line == prev:
        do the things
    prev = line