Except python не ловит ошибку виндовс FileNotFoundError | "Системе не удается найти указанный путь."
Дело в том что я хочу сделать так что-бы если папки нет то она сама создавалась. но except вообще не ловит эту ошибку ни в какую ни с "Windows Error" ни c "OS Error" ни просто без указания, а в интерпретаторе питона в коммандной строке вместо ошибки 'File Not Found Error" пишет таже самая ошибка виндовс: "Системе не удается найти указанный путь.
try:
config_file = f"C:/Windows/testdir"
os.system(f"cd {config_file}")
print(config_file)
# pass
except:
print("Config File not Found!\nConfig File created...")
Вывод:
C:/Windows/testdir
Системе не удается найти указанный путь.
Пожалуйста помогите если можете
Ответы (2 шт):
IMPoRT-, в системе Windows папки адресуются не прямым слэшем, а обратным
Т.е. вместо C:/Windows/testdir надо написать C:\Windows\testdir
Далее, когда мы переворачиваем слэш, т.е. пишем \ в питоне начинают отрабатывать специальные управляющие символы, например, \t это табуляция, поэтому C:\Windows \testdir работать не будет. Чтобы отключить в строке питона табуляцию, вам надо вместо буквы f в начале строки написать букву r, т.е. r"C:\Windows\testdir"
Когда я всё это написал у себя в коде, мне система Windows сказала, что вы не имеете доступа в папку Windows, что логично. Давайте изменим путь на такой
import os
config_file = r'C:\Users\ВашеИмя\testdir'
os.system( f'mkdir {config_file}' )
os.system( f'cd {config_file}' )
'''
IMPoRT-
'''
При повторном запуске из папки ничего не удаляется, а просто выводится сообщение о том, что папка наша уже существует. Поэтому в вашем примере можно обойтись без исключений ( exceptions ).
os.path.exists проверяет наличие папки по данному пути. Если папка была найдена, выводится путь и надпись "Config file has found!". Если нет, выводится "Config file not found! Config file created...". После этого os.mkdir создаёт папку по указанному пути и выводит "Config file created successfully!", что означает, что папка успешно создана.
import os
config_file = "C:/Windows/testdir"
if os.path.exists(config_file): # проверяет наличие файла/папки
print(f"{config_file}\nConfig file has found!")
else:
print("Config File not Found!\nCreate config file...")
os.mkdir("C:/Windows/testdir") # создаёт файл/папку по указанной директории
print("Config file created successfully!")
Может, у alex будет более понятно, я объяснил как мог.
alex, путь к файлам не зависит от того, какой слэш стоит, что C:/Windows/testdir, что C:\Windows\testdir, оба перенаправляют туда, куда надо.