Отправка случайной картинки в вк боте vk-api

Делаю бота в вк и хочу сделать функцию, отправляющую случайные картинки из директории Небольшой кусок кода:

def add_ph():
    attachments.append('photo{}_{}'.format(upload_img['owner_id'], upload_img['id']))
def send_msg(sender, message, keyboard=None):
authorize.method('messages.send', {
    'user_id': sender,
    'message': message,
    'random_id': get_random_id(),
    'attachment': ','.join(attachments)
    })
img1=random.choice(os.listdir("C:/Users/10/Desktop/coding/vk_bot/img/"))
for event in longpoll.listen():

if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
    msg = event.text 
    sender = event.user_id  

    attachments=[]
    upload_img = upload.photo_messages(photos=img1)[0]

    elif msg=='1':
        add_ph() 
        send_msg(sender, 'Фото')

В директории есть две картинки, при попытке написать боту "1" (выполнить функцию) выдает ошибку:

FileNotFoundError: [Errno 2] No such file or directory: 'frog.jpg'

Как можно исправить?


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

Автор решения: gil9red

Функция os.listdir возвращает список из имен папок и файлов. Ваш бот, скорее всего, запускается из папки vk_bot/ (предположительно, это будет активная директория). В img1 будет 'frog.jpg', тогда при отправке картинки поиск будет в активной директории скрипта, т.е. в vk_bot/frog.jpg

Одним из решений будет указывать полный путь для имени картинки

Пример:

abs_path_images = "C:/Users/10/Desktop/coding/vk_bot/img/"
img1 = abs_path_images + random.choice(os.listdir(abs_path_images))
→ Ссылка