Остановить операцию, не останавливая модуль в Python - PullRequest
0 голосов
/ 26 июня 2010

Ну, я сделал модуль, который позволяет вам проще скопировать файл в каталог. Теперь у меня также есть некоторые "try's" и "кроме", чтобы убедиться, что он не выходит из строя большим беспорядком и не закрывает терминал, но я также хочу, чтобы он отображал различные сообщения об ошибках, когда неверная строка или переменная вставляется, и завершает модуль, но не ... если я могу сказать, Терминал работает, так что я сделал это:

def copy():
    import shutil
    import os
    try:
        cpy = input("CMD>>> Name of file(with extension): ")
        open(cpy, "r")
    except:
        print("ERROR>>> 02x00 No such file")
    try:
        dri = input("CMD>>> Name of Directory: ")
        os.chdir(dri)
        os.chdir("..")
    except:
        print("ERROR>>> 03x00 No such directory")
    try:
        shutil.copy(cpy, dri)
    except:
        print("ERROR>>> 04x00 Command Failure")

Проблема в том, что он не завершает модуль, если нет файла или каталога, только на финише.

Ответы [ 2 ]

2 голосов
/ 26 июня 2010

Возможно, вы думаете, что когда возникает исключение, Python просто останавливает то, что он делает, но это не совсем так. Блок except: фактически перехватывает возникшее исключение и должен его обрабатывать. После завершения блока except: Python продолжит выполнение оставшейся части кода в файле.

В вашем случае я бы поставил return после каждого print(...). Таким образом, после того, как Python напечатает сообщение об ошибке, он также вернется из функции copy() вместо того, чтобы продолжать запрашивать дополнительные данные.

0 голосов
/ 26 июня 2010

Если вы сделали хотите заставить модуль завершиться при ошибке ...

Вот как вы это сделаете.

def copy():
    import shutil
    import os
    import sys
    try:
        cpy = input("CMD>>> Name of file(with extension): ")
        open(cpy, "r")
    except:
        sys.exit("ERROR>>> 02x00 No such file")
    try:
        dri = input("CMD>>> Name of Directory: ")
        os.chdir(dri)
        os.chdir("..")
    except:
        sys.exit("ERROR>>> 03x00 No such directory")
    try:
        shutil.copy(cpy, dri)
    except:
        sys.exit("ERROR>>> 04x00 Command Failure")
*Обычно используются 1009 * sys.exit (0) (для успеха) и sys.exit (1) (для сбоя), но, поскольку вы хотите вывести ошибку, приведенный выше пример выведет строку ошибки в stderr.

Вот ссылка для получения дополнительной информации о sys.exit () .

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