Python - DocXCompose [Uniendo varios archivos .docx en 1]

 
Vista:
Imágen de perfil de Drowels
Val: 53
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

DocXCompose [Uniendo varios archivos .docx en 1]

Publicado por Drowels (21 intervenciones) el 10/07/2020 17:11:16
Hola,

Estoy intentando llevar a cabo un proyecto en el cual desde un directorio con varios .docx (formato Word), nos permita crear un archivo con todos ellos unificados.

Ahora mismo tengo un directorio creado con varios .docx para probar. Con la librería docxcompose y desde terminal sí que soy capaz de unificar todos los docx en un solo docx, con la siguiente instrucción:

1
docxcompose .\Portada.docx .\Test2.docx .\Test3.docx .\Test4.docx .\Test5.docx .\Test6.docx -o UnionDeTest.docx

En la web de la librería https://pypi.org/project/docxcompose/ indica como se debería de hacer para cargar el código un un archivo.py. Con el código que nos facilitan como ejemplo, consigo unir solo dos archivos, de todos los que tengo.

1
2
3
4
5
6
7
from docxcompose.composer import Composer
from docx import Document
master = Document("master.docx")
composer = Composer(master)
doc1 = Document("doc1.docx")
composer.append(doc1)
composer.save("combined.docx")

Pero para unir solo dos archivos no lo necesite. La idea es poder unir 20 o más docx.
Supongo que se debe de poder hacer de alguna manera, pero no doy con las instrucciones correctas y ya me quedo sin ideas.

Agradecería que si puede ser alguien me ayude.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Drowels
Val: 53
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

DocXCompose [Uniendo varios archivos .docx en 1]

Publicado por Drowels (21 intervenciones) el 15/07/2020 12:21:59
Al final lo resolví del siguiente modo:

1
2
3
4
for k in range(50):
        docu = Document("./Temp/"+f"00{k}.docx")
        composer.append(docu)
        composer.save("./Proyecto_Final/Proyecto.docx")

De este modo funciona de lujo. Espero le pueda servir a alguien.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

DocXCompose [Uniendo varios archivos .docx en 1]

Publicado por Jaime (136 intervenciones) el 15/07/2020 13:59:01
Hola.
Si es un programa CLI, solo hubiera bastado con usar sys.argv o usar un framework como click (https://click.palletsprojects.com/en/7.x/)

Usando sys.argv

1
2
3
4
5
6
7
8
import sys
from docxcompose.composer import Composer
from docx import Document
 
if __name__ == "__main__":
    for doc in sys.argv:
        document=Document(doc)
        composer=Composer(document)

Aclaro que es un ejemplo, porque sys.argv, el primer argumento (sys.argv[0]) es el nombre del programa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Drowels
Val: 53
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

DocXCompose [Uniendo varios archivos .docx en 1]

Publicado por Drowels (21 intervenciones) el 16/07/2020 21:18:22
Me pilla muy avanzado eso aun. Pero me lo guardo para cuando llegue a ese nivel poner en práctica.

Muchas gracias por la respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar