Попробуй блок ловит неправильное исключение
Я пытаюсь создать папку, обрабатывая различные ошибки (FileExistsError
если папка уже существует и OSError
если имя папки содержит недопустимые символы), но Python, похоже, всегда выбирает первый, кроме блока, при обнаружении ошибки, независимо от того, какая она и в каком порядке.
Есть что-то, чего я не понял?
import os
from pathlib import Path
def generateSetup(name) :
dir_path = os.path.dirname(os.path.realpath(__file__))
if not Path(dir_path + '/setups').exists() : os.mkdir(dir_path + '/setups')
try : os.mkdir(dir_path + '/setups/' + name)
except FileExistsError : print('The file already exists')
except OSError : print('The name contains illegal characters')
stp_name = input('Enter your setup\'s name :')
generateSetup(stp_name)
2 ответа
В вашем коде нет ничего плохого. Работает правильно как задумано, ловит FileExistsError
если каталог уже существует или OSError
если имя каталога содержит недопустимые символы. Поэтому я предполагаю, что проблема в том, как вы тестируете код
>>> dloc='tmp/\/b'
>>> try:
... os.mkdir(dloc)
... except FileExistsError:
... print('The file already exists')
... except OSError:
... print('The name contains illegal characters')
...
The name contains illegal characters
Мы можем дать любое имя каталогу, в котором нет соглашений об именах, которым нужно следовать при создании каталога с помощью кода Python. В этом случае только первый, кроме блока, выдаст сообщение, если введенное имя уже является именем каталога, в противном случае - нет.