samedi 16 mai 2020

program seperates audio, videos and save them by making folders seperately but it is giving error when i run again that folder already exists

this program is seperating different files i.e. audio, video and document and saves them seperately by making different folders i.e. audioFiles, videoFiles, documentFiles here is the code

import os, shutil 
dict_extensions = {
    'audio_extensions' : ('.mp3', '.m4a', '.wav', '.flac'),
    'video_extensions' : ('.mp4', '.mkv', '.MKV', '.flv', '.mpeg'),
    'document_extensions' : ('.doc', '.pdf', '.txt'),
}


folderpath = input('enter folder path : ')

def file_finder(folder_path, file_extensions):
    # files = []
    # for file in os.listdir(folder_path):
    #     for extension in file_extensions:
    #         if file.endswith(extension):
    #             files.append(file)
    # return files
    return [file for file in os.listdir(folder_path) for extension in file_extensions if file.endswith(extension)]
for extension_type, extension_tuple in dict_extensions.items():
    folder_name = extension_type.split('_')[0] + ' Files'
    folder_path = os.path.join(folderpath, folder_name)
    os.mkdir(folder_path)
    for item in file_finder(folderpath, extension_tuple):
        item_path = os.path.join(folderpath,item)
        item_new_path = os.path.join(folder_path,item)
        shutil.move(item_path,item_new_path)
    if os.listdir(folder_path)==[]:
        os.rmdir(folder_path)

also it will not create the folder when file related to it doesn't exist. but when i rerun it it gives error that folder already exists. so i tried to solve this problem by if else statement but it is still giving the same error. here is the code after small changes:-

import os, shutil
dict_extensions = {
    'audio_extensions' : ('.mp3', '.m4a', '.wav', '.flac'),
    'video_extensions' : ('.mp4', '.mkv', '.MKV', '.flv', '.mpeg','.MTS'),
    'document_extensions' : ('.doc', '.pdf', '.txt','.docx'),
}


folderpath = input('enter folder path : ')

def file_finder(folder_path, file_extensions):
    # files = []
    # for file in os.listdir(folder_path):
    #     for extension in file_extensions:
    #         if file.endswith(extension):
    #             files.append(file)
    # return files
    return [file for file in os.listdir(folder_path) for extension in file_extensions if file.endswith(extension)]

# print(file_finder(folderpath, video_extensions))
for extension_type, extension_tuple in dict_extensions.items():
    if os.path.exists(extension_type.split('_')[0] + 'Files'):
        path=os.path.join(folderpath,extension_type.split('_')[0] + 'Files')
        for item in file_finder(folderpath, extension_tuple):
            item_path = os.path.join(folderpath,item)
            item_new_path = os.path.join(path,item)
            shutil.move(item_path,item_new_path)
    else:
        folder_name = extension_type.split('_')[0] + 'Files'
        folder_path = os.path.join(folderpath, folder_name)
        os.mkdir(folder_path)
        for item in file_finder(folderpath, extension_tuple):
            item_path = os.path.join(folderpath,item)
            item_new_path = os.path.join(folder_path,item)
            shutil.move(item_path,item_new_path)
    if os.listdir(folder_path)==[]:
        os.rmdir(folder_path)

and the error is

 python first_project_edited.py
enter folder path : E:\testing
Traceback (most recent call last):
  File "first_project_edited.py", line 33, in <module>
    os.mkdir(folder_path)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'E:\\testing\\audioFiles'

Aucun commentaire:

Enregistrer un commentaire