ich habe ein kleines Programm geschrieben, welches das erste Frame eines Videos "herauszieht" und als JPEG-Bild abspeichert.
Ich möchte gerne nach dem Speichervorgang das Video in den übergeordneten Ordner verschieben.
Nachdem das Programm das Video in den übergeordneten Ordner kopiert hat, versucht es das Video zu löschen. Da es ja nun im übergeordneten Ordner existiert.
Das Video kann nicht gelöscht werden, stattdessen bekomme ich diesen Fehler:
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Program Files\Python39\lib\shutil.py", line 806, in move
os.rename(src, real_dst)
PermissionError: [WinError 32] Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird: 'C:\\Users\\haeus\\workspace\\barn-guard-website\\backend\\video-data\\new\\123.mp4' -> 'C:\\Users\\haeus\\workspace\\barn-guard-website\\backend\\video-data\\123.mp4'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\haeus\workspace\barn-guard-website\backend\thumbnail_test.py", line 54, in <module>
main()
File "C:\Users\haeus\workspace\barn-guard-website\backend\thumbnail_test.py", line 50, in main
shutil.move(video_path, destination_folder)
File "C:\Program Files\Python39\lib\shutil.py", line 821, in move
os.unlink(src)
PermissionError: [WinError 32] Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird: 'C:\\Users\\haeus\\workspace\\barn-guard-website\\backend\\video-data\\new\\123.mp4'
Wenn dem so sein sollte verstehe ich nicht warum. Falls es nicht mein Programm ist, gibt es eine Möglichkeit herauszufinden von welchem Programm die Datei momentan benutzt wird?
Danke euch schonmal
Hier mein vollständiges Programm:
Code: Alles auswählen
from moviepy.editor import VideoFileClip
from PIL import Image
import os
import shutil
BASE_PATH = os.getcwd() #+ '\\backend'
def generate_path(target):
if target == "video":
return BASE_PATH + '\\video-data\\new\\'
elif target == "thumbnail":
return BASE_PATH + '\\thumbnail_pics\\'
elif target == "video-move":
return BASE_PATH + '\\video-data\\'
def generate_thumbnail(video_path, thumbnail_path):
video = VideoFileClip(video_path)
frame = video.get_frame(0)
thumbnail_jpg = Image.fromarray(frame)
thumbnail_jpg.save(thumbnail_path)
def generate_thumbnail_name(videoname):
split_video = videoname.split('.')
return split_video[0] + '.jpg'
def main():
# videonames are a random hash number
videoname = "123.mp4"
# thumbnail names are the same name as the video (only data-format ending is another)
thumbnail_name = generate_thumbnail_name(videoname)
video_path = f'{generate_path("video")}{videoname}'
thumbnail_path = f'{generate_path("thumbnail")}{thumbnail_name}'
print()
print(f'Get Thumbnail Picture from: {video_path}')
print()
print(f'Save Thumbnail Picture at: {thumbnail_path}')
print()
generate_thumbnail(video_path, thumbnail_path)
# move the videofile out of new-Folder
destination_folder = generate_path("video-move")
print(destination_folder)
shutil.move(video_path, destination_folder)
if __name__ == '__main__':
main()