Некрасивое и неправильное использование методово os.
Если делаете путь с флагом r - можно не экранировать бекслеши. И трейлинг слеш не нужен, так что
my_path = r'C:\Users\User\Desktop\python\my_first_project\Documents'
os.chdir(my_path)
- не нужен
В таком коде:
check_dir = os.listdir()
for items in check_dir:
if items != str(id_data):
папка будет создаваться всегда (если она не стоит в самом верху). Плюс, такое использование в принципе может привести к проблемам, если существует файл с одноименным названием. Лучше всего будет использовать встроенный метод
os.path.isdir(path)
, который проверяет, является ли переданный в него путь
папкой (не файлом).
Есть
os.mkdir()
, а есть
os.makedirs()
, может тоже в будущем поможет. Мы будем брать
os.mkdir()
.
Пути лучше соединять не через конкатенацию, или просто через f строку, а использовать опять же встроенный специальный метод, ибо зачем тогда они нужны вообще.
folder_path = os.path.join(my_path, id_data)
Если все это соединить, в конце получим нормально работающий красивый код:
my_path = r'C:\Users\User\Desktop\python\my_first_project\Documents'
async def create_personal_folder(id_data):
folder_path = os.path.join(my_path, str(id_data))
if os.path.isdir(path):
return 'Вы давно были зарегистрированы'
else:
os.mkdir(folder_path)
return 'Двигаемся дальше'
В следующий раз оборачивайте код в специальный тег, никому не интересно читать невалидный файл.
Небольшой читшит:
https://pythonworld.ru/moduli/modul-os-path.html
И не нужно писать ответ как тот, который вы написали. Это поле для
ответа, никто не заходит в вопрос, если видно, что на него уже дали ответ, а на деле оказывается это вы просто пометку оставили. Редактируйте вопрос, либо пишите в комментарий к вопросу, если есть детали