Остановить скрипт, EOFError: EOF при чтении строки - PullRequest
0 голосов
/ 14 марта 2019

Я запускаю скрипт, который выполняет несколько процессов, которые выполняются в разных классах. Процессы не заканчиваются, пока пользователь не попросит об этом. Поэтому в основном классе я решил создать процесс, который будет завершать () сценарий, и я предполагал, что это также уничтожит все процессы. Это класс main.py.

def finishTest():
    end = "notexit"
    while end != "exit":
        end = input("To finish the test type 'exit'")
    exit()


if __name__ == '__main__':

    fT = Process (target=finishTest)
    fT.start()
    #this are functions of this class that call functions from other classes that run the other processes.
    askTest()
    execTest()

Когда я выполняю main.py, появляется следующая ошибка,

Traceback (most recent call last):
  File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
    self.run()
  File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
    self._target(*self._args, **self._kwargs)
  File "execution.py", line 20, in finishTest
    exit = input("To finish the test type 'exit'")
EOFError: EOF when reading a line

Как мне исправить эту ошибку? Разве это не правильный способ остановить сценарий и все процессы, выполняемые сценарием?

Спасибо всем!

1 Ответ

0 голосов
/ 14 марта 2019

Измените имя переменной exit и попробуйте поместить ее в блок, исключающий попытку:

def finishTest():
    ex = "notexit"
    while ex != "exit":
        try:
            ex = input("To finish the test type 'exit'")
        except EOFError:
            pass
    exit()

ВЫХОД :

To finish the test type 'exit'hey
To finish the test type 'exit'okay
To finish the test type 'exit'bye
To finish the test type 'exit'exit

Process finished with exit code 0
...