Попробуйте - кроме ошибки в какое-то время - PullRequest
0 голосов
/ 19 октября 2019

Я столкнулся с особенно печально известной проблемой: я создаю своего рода консольную программу на Python 3.6, но когда я пишу команду, которая не является 'exit' или 'shutdown', если эта команда неверна, консоль вводитцикл и продолжает пытаться выполнить неправильную команду, посылая в консоли спам сообщение об ошибке, определенное с помощью инструкции «кроме».

Я попытался удалить оператор «попробовать» и «кроме», но так, если команда неверна, программа прерывается и команда закрытия не выполняется.

PS Я забыл написать это с помощью инструкции «try-Кроме», если я нажимаю Enter без записи чего-либо, ошибкаоставляет то же самое.

Машинный код - Старт

        import os
        print("$ ", end="") #No end-line
        console_standard_input = input()
        while console_standard_input != ".shutdown":
            if (console_standard_input == "exit"):
                print("Shutting down machine...")
                sys.exit(-1)
            try:
                machine_exec_script_path_complete = "Disk\{0}".format(console_standard_input)
                os.system(machine_exec_script_path_complete)
            except:
                print("Unable to exec this function - Error")
                print("")
            print("$ ", end="")
        #Machine code - Stop

Я пока не смог найти решение. Я не очень хорош в Python, поэтому я хотел попросить помощи эксперта.

1 Ответ

0 голосов
/ 19 октября 2019

Попробуйте:

import os
print("$ ", end="") #No end-line
console_standard_input = input()
while console_standard_input != ".shutdown":
    if(console_standard_input == "exit"):
        print("Shutting down machine...")
        sys.exit(-1)
    try:
        machine_exec_script_path_complete = "Disk\{0}".format(console_standard_input)
        os.system(machine_exec_script_path_complete)
    except:
        print("Unable to exec this function - Error")
        print("")
    print("$ ", end="")
    console_standard_input = input()

Пояснение - если вы хотите продолжать оценивать ввод - вы должны явно указать input. Присвоение input() переменной присваивает только ее значение (пользовательский ввод), а не всю операцию, т. Е. Не вынуждает ее повторяться всякий раз, когда переменная переоценивается ...

...