дублируются бэкспейсы в пути к файлу в aiogram при попытке отправки фото с диска

await bot.send_photo(chat_id=call.message.chat.id, photo=FSInputFile(path=path_toImage.replace('//', '/')), caption='<a href="https://google.com">VK</a>', parse_mode=ParseMode.HTML)

Пытался решить проблему радикально но даже это не помогает. Переменную path_toImage вывожу до того как отправить функцию дает нормальный путь:

"'D:\TelegramBot\aboba\ImageContent\IAmLucky\photo"

Но как только выполняеться код сразу выскакивает ошибка:

"OSError: [WinError 123] Синтаксическая ошибка в имени файла, имени папки или метке тома: 'D:\\TelegramBot\\PayForPrivate\\ImageContent\\IAmLucky\\photo\*'"

Кто ни будь знает почему так ? Я вот лично предполагаю что это какая то цыганская магия питона.


Ответы (2 шт):

Автор решения: Лосяш

Я решил это! Но настолько тупо и настолько нелепо.

Эта функция возвращает путь к файлу прям с корневой папки проекта

def get_path_with_photo(folder_path):

    PROJECT_ROOT2 = Path(__file__).parents[2]
    image_files_pattern = os.path.join(PROJECT_ROOT2, folder_path)
    
    return image_files_pattern

и вот в качестве параметра я давал "ImageContent\IAmLucky\photo" а оказывается что надо было давать "ImageContent/IAmLucky/photo/" почему так я не знаю. Если кто скажет буду благодарен, инфу в гугле искал - не нашел

→ Ссылка
Автор решения: eri

100500 раз обсуждалось... можно путь в винде указывать несколькими способами, но "ImageContent\IAmLucky\photo" нельзя потому что одиночный бэкслеш это для экранирование спецсимволов. например \n

Можно

PROJECT_ROOT2 / "ImageContent" / "IAmLucky" / "photo"

"ImageContent/IAmLucky/photo"

r"ImageContent\IAmLucky\photo"

"ImageContent\\IAmLucky\\photo"

os.path.join("ImageContent" , "IAmLucky" , "photo")
→ Ссылка