функция застряла в readlines - PullRequest
0 голосов
/ 29 апреля 2018

Мой скрипт на python застревает на этом этапе, когда нет ввода: еще:

lines = sys.stdin.readlines()

Моя программа не должна поддерживать ввод, так что есть способ вычислить его, если нет ввода, так что я просто возвращаюсь из функции. Я попытался увидеть, были ли строки пустыми, но элемент управления, кажется, потерян внутри функции readlines (никогда не выходит из нее)

Вот полный оператор if

if len(args) != 0 and args[0] != '-':
           # print('B')
            input_file = args[0]
            try:
                f = open(input_file, 'r')
                lines = sys.stdin.readlines()
                lines = f.close()
            except:
                return
        else:
            #print('c')
            lines = sys.stdin.readlines()

есть ли способ обойти это?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Из моего комментария оригинал переходит к u0b34a0f6ae:

import fileinput

for line in fileinput.input():
    pass

Как вы читаете со стандартного ввода в Python?

0 голосов
/ 29 апреля 2018

Вы не можете использовать readlines, потому что это требует новой строки для чтения, и в зависимости от вашего ввода вы не можете предсказать, когда это произойдет.

Вместо этого используется модуль выбора для проверки (с таймаутом) новых данных. Если они есть, прочитайте их с помощью read () и соберите вместе данные, затем разделите строки и передайте их остальной части вашей программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...