es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir los PDF en JPEG y mover los JPEG convertidos a sus respectivas subcarpetas.

Quería convertir todos mis PDFs a JPEGS desde un directorio principal (que tiene 2 o 3 subcarpetas) y colocar los JPEGS convertidos en las respectivas subcarpetas de donde fueron seleccionados para la conversión.

A continuación se muestra mi código que utilicé para convertir los PDFs a JPEGS.

data_dir1 = pathlib.Path("C:/Users/parent_directory/")

for root, dirs, files in os.walk(data_dir1, "*.pdf"):
    for file in files:
        if file.endswith(".pdf"):
            # print(file)
            print(os.path.join(root, file))
            pages = convert_from_path(os.path.join(root, file), 500)
            for page in pages:
                page.save(file + ".jpg", "JPEG")

¿Alguien me podría ayudar con una manera de moverlos a sus respectivas subcarpetas de donde fueron seleccionados?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes modificar el código agregando algunas líneas para mover los archivos jpeg convertidos a sus respectivas subcarpetas. Aquí está el código modificado:

    data_dir_1 = pathlib.Path("C:/Users/directorio_padre/")
    
    for root, dirs, files in os.walk(data_dir_1):
        for file in files:
            if file.endswith(".pdf"):
                pdf_path = os.path.join(root, file)
                print(pdf_path)
                pages = convert_from_path(pdf_path, 500)
                subfolder_path = pathlib.Path(root).relative_to(data_dir_1)  # obtener la ruta de la subcarpeta
                for page_idx, page in enumerate(pages):
                    jpg_file = f"{file[:-4]}_page{page_idx+1}.jpg"  # crear un nuevo nombre de archivo jpg
                    jpg_path = os.path.join(root, jpg_file)
                    page.save(jpg_path, "JPEG")
                    new_jpg_path = os.path.join(data_dir_1, subfolder_path, jpg_file)  # crear una nueva ruta jpg con la subcarpeta
                    shutil.move(jpg_path, new_jpg_path)  # mover el archivo a la subcarpeta
    

    Aquí, primero obtenemos la subfolder_path utilizando el módulo pathlib para encontrar la ruta relativa de la subcarpeta actual con respecto al directorio padre data_dir_1. Luego, para cada jpeg convertido, creamos un nuevo nombre de archivo basado en el nombre del archivo pdf original y agregamos un número de página. También creamos una nueva ruta para el archivo jpeg dentro de la subcarpeta respectiva. Finalmente, utilizamos el módulo shutil para mover el archivo jpeg convertido desde su ubicación original a la nueva ubicación dentro de la subcarpeta.

Comments are closed.