Переместить файл из одного каталога в несколько вложенных папок

#python

#python

Вопрос:

Я хочу переместить видеофайлы из 1 папки в отдельные вложенные папки

Я создал скрипт для создания видео из кадров. Он создает несколько видео правильно, но только по одному определенному пути. Ниже приведен код

 def frames_to_video(detected_object_input,video_op,fps):

    folders=glob(detected_object_input)
    img_list=[]
    frame_array=[]

    for folder in folders:
        folder_name=os.path.basename(folder)
        vid_ext=".mp4"
        vid_name = folder_name vid_ext
        final_op=video_op "\" vid_name
        #print(final_op)

        for f in glob(folder "/*jpg"):
            img_list.append(f)

        for i in range(len(img_list)):
            filename = img_list[i]
            img=cv2.imread(img_list[i])
            height,width,layers=img.shape
            size=(width,height)
            print(filename)
            frame_array.append(img)

            out = cv2.VideoWriter(final_op,cv2.VideoWriter_fourcc(*'DIVX'),fps,size)

            for i in range(len(frame_array)):
                out.write(frame_array[i])
            out.release()


detected_object_input= ("C:\new_multi_cat\models\research\object_detection\my_imgs\*")
video_op= ("C:\new_multi_cat\models\research\object_detection\my_imgs")
fps= 2
frames_to_video(detected_object_input, video_op, fps)
  

Предположим, что есть папка X. Он имеет несколько вложенных папок, таких как A, B, C. Мой код создает видеофайлы в соответствии с именами папок, т.Е. videoA, videoB, videoC и т. Д. Но эти видео создаются в папке X. Я хочу, чтобы эти видеофайлы создавались в соответствующих подпапках, таких как videoA внутри подпапки A, videoB внутри подпапки B и т. Д

Комментарии:

1. Вы пробовали использовать «/» вместо «\» или r»/»?

2. @mazunki где именно? при присвоении значения переменной final_op? На самом деле я пытался использовать «/», но результат был все тот же

3. Вы используете стандарт сокращения Windows и обратную косую черту в строках Python для вывода одного . Использование необработанных строк r"like this one" предотвращает синтаксический анализ обратных косых черт. В качестве альтернативы используйте / , который является рекомендуемым кроссплатформенным стандартом.

4. Это происходит из-за использования базового имени. Использование относительного пути должно решить проблему.

5. Попробуйте использовать os.path.relpath(folder, video_op) вместо os.path.basename(folder)