Как избавиться от ошибки в коде для склейки видео по запросу пользователя? moviepy

Рейтинг: 1Ответов: 2Опубликовано: 16.02.2023

Я совсем новичок, решил поэкспериментировать, поэтому заранее извиняюсь) В общем, была задача такая:
-в папке лежат 33 gif с анимацией каждой буквы алфавита
-пользователь вводит слово, например, "привет"
-программа склеивает gif в нужном порядке и сохраняет в папке
Вот код:

from moviepy.editor import *


def gif_list(usr_inp):
    lst = list(usr_inp.upper())
    gifs = []
    for i in lst:
        gif_path = (f'"./Video2/{i}.gif"')
        print(gif_path)
        gifs.append(VideoFileClip(gif_path))
    return gifs


def make_gif(inp):
    final = concatenate_videoclips(gif_list(inp))
    final.write_gif(f'{inp}.gif')
    return


user_input = input("Введите слово для получения видео: \n")
make_gif(user_input)

Выдает ошибку:

"/Video2/Б.gif": Invalid argument

А если использовать

lst.append(VideoFileClip("./Video2/Б.gif"))

то работает. Как исправить, чтобы путь к файлу правильно считывался?
Спасибо!

Ответы

▲ 2Принят

Вы используете UNIX-style path (пути в стиле UNIX).

  • Куда ведет /Video2/Б.gif? Он обращается по пути [корень диска] -> папка "Video2" -> файл "Б.gif". В Windows этот путь можно представить, например, так: C:\Video2\Б.gif
  • А в случае с ./Video2/Б.gif поведение будет немного другим. Здесь компьютер обратится по пути [папка, в которой находится скрипт] -> папка "Video2" -> файл "Б.gif".

Вам походит вариант номер 2.

▲ 0

РЕШЕНО!
Заменил

gif_path = (f'"./Video2/{i}.gif"')

на

gif_path = (f'./Video2/{i}.gif')

и все заработало! Спасибо!