En este artículo, discutiremos cómo mover varias carpetas a una carpeta. Esto se puede hacer usando el sistema operativo de Python y el módulo Shutil .
Acercarse:
- Obtenga el directorio actual y la lista de las carpetas que desea fusionar.
- Recorra la lista de carpetas y almacene su contenido en una lista. Aquí los hemos guardado en el diccionario para que podamos tener el nombre de la carpeta como clave y su contenido como lista de valores.
- Especifique la carpeta en la que desea fusionar todas las demás carpetas. Si la carpeta existe, estamos listos para continuar, pero si la carpeta no existe, cree una nueva carpeta.
- Recorra el diccionario y mueva todo el contenido de todas las carpetas enumeradas dentro de la carpeta de combinación.
Implementemos este enfoque paso a paso:
Paso 1: El siguiente código hace lo siguiente:
- Obtener el directorio actual.
- Enumere todas las carpetas que desea fusionar.
- Almacena el contenido de todas las carpetas enumeradas en el diccionario con el nombre de la carpeta como clave y su contenido como una lista de valores.
Python3
# current folder path current_folder = os.getcwd() # list of folders to be merged list_dir = ['Folder 1', 'Folder 2', 'Folder 3'] # enumerate on list_dir to get the # content of all the folders ans store it in a dictionary content_list = {} for index, val in enumerate(list_dir): path = os.path.join(current_folder, val) content_list[ list_dir[index] ] = os.listdir(path)
Paso 2: crea la carpeta de combinación si aún no existe.
Python3
# Function to create new folder if not exists def make_new_folder(folder_name, parent_folder_path): # Path path = os.path.join(parent_folder_path, folder_name) # Create the folder # 'new_folder' in # parent_folder try: # mode of the folder mode = 0o777 # Create folder os.mkdir(path, mode) except OSError as error: print(error) # folder in which all the content # will be merged merge_folder = "merge_folder" # merge_folder path - current_folder # + merge_folder merge_folder_path = os.path.join(current_folder, merge_folder) # create merge_folder if not exists make_new_folder(merge_folder, current_folder)
Paso 3: El siguiente código hace lo siguiente:
- Recorra el diccionario con todas las carpetas.
- Ahora recorra el contenido de cada carpeta y muévalos uno por uno a la carpeta de combinación.
Python3
# loop through the list of folders for sub_dir in content_list: # loop through the contents of the # list of folders for contents in content_list[sub_dir]: # make the path of the content to move path_to_content = sub_dir + "/" + contents # make the path with the current folder dir_to_move = os.path.join(current_folder, path_to_content ) # move the file shutil.move(dir_to_move, merge_folder_path)
Código completo:
Python3
import shutil import os # Function to create new folder if not exists def make_new_folder(folder_name, parent_folder): # Path path = os.path.join(parent_folder, folder_name) # Create the folder # 'new_folder' in # parent_folder try: # mode of the folder mode = 0o777 # Create folder os.mkdir(path, mode) except OSError as error: print(error) # current folder path current_folder = os.getcwd() # list of folders to be merged list_dir = ['Folder 1', 'Folder 2', 'Folder 3'] # enumerate on list_dir to get the # content of all the folders ans store # it in a dictionary content_list = {} for index, val in enumerate(list_dir): path = os.path.join(current_folder, val) content_list[ list_dir[index] ] = os.listdir(path) # folder in which all the content will # be merged merge_folder = "merge_folder" # merge_folder path - current_folder # + merge_folder merge_folder_path = os.path.join(current_folder, merge_folder) # create merge_folder if not exists make_new_folder(merge_folder, current_folder) # loop through the list of folders for sub_dir in content_list: # loop through the contents of the # list of folders for contents in content_list[sub_dir]: # make the path of the content to move path_to_content = sub_dir + "/" + contents # make the path with the current folder dir_to_move = os.path.join(current_folder, path_to_content ) # move the file shutil.move(dir_to_move, merge_folder_path)
Estructura de carpetas antes de ejecutar el programa anterior.
Folder 1 File 1 File 2 Folder 2 File 3 File 4 Folder 3 File 5 File 6 Folder 4 File 7 File 8 merge_folder (Empty) move_script.py
Estructura de carpetas después de ejecutar el programa anterior.
Folder 1 (Empty) Folder 2 (Empty) Folder 3 (Empty) Folder 4 (Untouched) File 7 File 8 merge_folder File 1 File 2 File 3 File 4 File 5 File 6 move_script.py
Programa en funcionamiento:
Publicación traducida automáticamente
Artículo escrito por adityapande88 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA