Операция ввода / вывода для закрытого файла с использованием input () - PullRequest
0 голосов
/ 08 июня 2018

У меня есть код, который устанавливает среду для запуска и регистрации научных экспериментов.Некоторые из начальных настроек включают использование встроенного метода input () для запроса значений пользователя.Я продолжаю получать операцию ввода-вывода при ошибке закрытого файла всякий раз, когда пытаюсь вызвать ввод, как бы то ни было.Поток кода: Control.py вызывает Analyzer.py, который вызывает определенный метод в Prompts.py (код которого приведен ниже).

def prompt_instruments(message):
    res = input(message) # query user with arg message
    print("done")
    if '.' in res:
        print("User input not cool. Use comma-separated values.")
        return None # to continue prompting
...

Я искал по всему Интернету и не смог найтичто-нибудь отдаленно связанное.Большое спасибо !!

1 Ответ

0 голосов
/ 08 июня 2018

Код, который вы опубликовали, выглядит нормально, и ошибка, вероятно, в одном из ваших других файлов.

Функция input() использует sys.stdout для отображения текста приглашения и sys.stdin для получениявводимый пользователем текст.

Полученное сообщение об ошибке, вероятно, вызвано закрытием одного из этих файлов, например:

>>> import sys
>>> input('test: ')
test: hello
'hello'
>>> sys.stdin.close()
>>> input('test: ')
test: Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.

или:

>>> import sys
>>> input('test: ')
test: hi
'hi'
>>> sys.stdout.close()
>>> input('test: ')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.

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

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