Остановить закрытие программы Python, когда каталог не найден - PullRequest
0 голосов
/ 26 мая 2019

Я создаю клон DOS с python, и у меня есть команда cd, которая позволяет вам сменить каталог. Единственная проблема заключается в том, что если вы ошибетесь или введете несуществующий каталог, программа закроется с ошибкой трассировки. Я в основном ищу его не для того, чтобы полностью закрыть программу, а вместо этого print оператор типа 'requested_directory' Is not a directory! и позволяющий вам печатать в другом каталоге.

Я пробовал пару вещей, в основном обработку ошибок, но без преимуществ. Я предполагаю, что до сих пор не совсем понимаю, как обрабатывать ошибки или неправильно их использую.

Любая помощь очень ценится.

Это код, который я использую для смены каталогов (elif, потому что у меня много других команд. cmd - необработанный ввод.)

elif 'cd' in cmd:
        desired_directory = cmd.split(' ')[1]
        if desired_directory == "..":
            os.chdir('..')
        else:
            os.chdir(desired_directory)

Это вывод, когда неправильный каталог введен в

Traceback (most recent call last):
  File "/Users/jrosmac/PycharmProjects/untitled/JDOS/SYS64/jdosos.py", line 47, in <module>
    os.chdir(desired_directory)
OSError: [Errno 2] No such file or directory: 'raw_input goes here'

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Использовать передачу исключений:

try:
    os.chdir(target)
except OSError as e:
    # handle the failure of the chdir call
0 голосов
/ 26 мая 2019

Я считаю, что вам нужно обработать ошибку.

try:
    os.chdir(desired_directory)
except OSError as e:
    print e.args[0]
...