Leer un documento docx con python3
Resueltomamiemando Mensajes publicados 33228 Fecha de registro Estado Moderador Última intervención -
Hola,
También estoy comenzando con doc, quiero leer un archivo de Word en Python:
import docx doc = docx.Document("EL ÁNGEL GABRIEL") print (read(doc)) ModuleNotFoundError: No module named 'docx'
¿Dónde está el error? Gracias.
17 respuestas
Hola,
Marcaré el tema como resuelto (ver #65), @quentin2121 EstadoMiembro piensa en hacerlo en el futuro como se explica aquí.
Gracias a todas las personas (en particular 633049 y @Diablo76 EstadoMiembro) que ayudaron a quentin2121 a encontrar la respuesta. A continuación, un resumen de esta larga discusión.
Resumen del problema
Leer un archivo docx en python3 en Windows.
Resumen de la solución
- Instalar pycharm.
- Crear un nuevo proyecto en pycharm.
- Se recomienda crear para el proyecto un entorno virtual que utilice el intérprete python 3.11, ya que python 3.12 actualmente presenta problemas.
- Si python3.11 no está instalado, ver #59 para ver cómo proceder.
- Instalar python-docx. Atención a no instalar docx, sino python-docx este enlace). Se pueden utilizar dos métodos
- a través del menú de paquetes de Python de pycharm
- a través del terminal (shell) (no en el intérprete de python) de pycharm, invocando uno mismo pip:
-
python -m pip install --upgrade pip # Actualización de pip pip install python-docx # Instalación del paquete
-
- En caso de error de pip, en particular:
When import docx in python3.3 I have error ImportError: No module named 'exceptions'
... hay que considerar usar otra versión de python, por ejemplo python 3.11. El error anterior impacta (actualmente) python3.12.
Buena suerte y gracias a tod@s
En la parte inferior derecha de Pycharm, ves el intérprete utilizado (en mi captura 3.11)
Haces clic en él y puedes ver todos los intérpretes instalados (en mi captura 3.9 y 3.11) así como menús para configurar todo esto.
Ahí, eliges 3.11 o lo instalas si no lo has hecho y estará bien al menos para tu proyecto en curso.

Como ya te hemos dicho, Pycharm crea un entorno virtual por proyecto. Todas las dependencias del proyecto están en ese entorno (por ejemplo, docx si lo instalas, solo será accesible desde este proyecto; desde otro, tendrás que instalarlo de nuevo).
Pero hay parámetros que son globales a Pycharm, y no conozco lo suficiente este IDE para afirmarte si el intérprete es global o no.
Pero como está escrito Python 3.11 (SAGC) que es el nombre de mi proyecto, tiendo a pensar que no es un parámetro global.
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns
import docx doc = docx.Document # doc.read("EL ÁNGEL GABRIEL") De hecho, el error puede ser que mi documento está en el disco D, ¿cómo puedo hacer que Python acceda a él?
¿Escribiendo cd dir en la línea 2?
He añadido mi documento en PythonProject de Pycharm a través del explorador de archivos de Windows en el disco C, pero eso no funciona mejor.
En mis cursos, el módulo docx ya está instalado en Pycharm, ya que no lo agregamos al inicio del ejercicio.
Hola,
No importa dónde se encuentre el archivo, coloca la ruta:
import docx doc = docx.Document("C:\\Phil\\Dev\\Python\\tests\\Word_test.docx") for para in doc.paragraphs: print('Párrafo:\n',para.text)
import docx doc = docx.Document("C:\\Users\\quent\\PycharmProjects\\pythonProject\\L'ANGE_GABRIEL.docx") Tengo este error:
doc = docx.Document("C:\\Users\\quent\\PycharmProjects\\pythonProject\\L'ANGE_GABRIEL.docx")
SyntaxError: (error de unicode) 'unicodeescape' codec no puede decodificar bytes en la posición 2-3: escape \UXXXXXXXX truncado
He hecho esto, pero siempre hay errores
Me han enseñado a hacerlo así :
import docx
doc = docx.Document()
# doc.add_paragraph("hola mundo")
doc.save("hola mundo.docx")
paraObj1 = doc.paragraph ("segundo párrafo")
paraObj2 = doc.paragraph ("tercer párrafo")
paraObj1.add_run("texto adicional")
doc.save("párrafos_múltiples.docx")
Buenas noches,
En programación, cuando se tienen errores, es necesario indicarlos; Python es excelente para eso, así que publica el traceback completo de los errores, y sobre todo, nada de imágenes, un simple texto es más que suficiente.
Probablemente deberías seguir un tutorial sobre este módulo, porque en este momento pareces estar completamente perdido.
Por ejemplo, este:
https://www.geeksforgeeks.org/python-working-with-docx-module/
O también:
https://stackabuse.com/reading-and-writing-ms-word-files-in-python-via-python-docx-module/
Buena suerte.
Hola,
¿Has probado esto:
import docx doc = docx.Documents("C:/Users/quent/PycharmProjects/pythonProject/L'ANGE_GABRIEL.docx")
Archivo "C:\Users\quent\PycharmProjects\pythonProject\l'ange gabriel.py", línea 1, en <module>
import docx
Archivo "C:\Users\quent\PycharmProjects\pythonProject4\venv\Lib\site-packages\docx.py", línea 21, en <module>
from PIL import Image
Archivo "C:\Users\quent\PycharmProjects\pythonProject4\venv\Lib\site-packages\PIL\Image.py", línea 39, en <module>
import tempfile
Archivo "C:\Users\quent\AppData\Local\Programs\Python\Python312\Lib\tempfile.py", línea 45, en <module>
from random import Random as _Random
Archivo "C:\Users\quent\PycharmProjects\pythonProject\random.py", línea 2
generar un número aleatorio(1-10)
^^
SyntaxError: sintaxis inválida
Me pregunto si tengo instalado el módulo docx en Pycharm. ¿Qué ruta o comando de consola puedo usar para verlo, por favor?
Hola,
¿Nadie para ayudarme? Estoy en un aprieto aquí.
Pequeños recordatorios:
- Somos voluntarios
- Nuestras vidas son lo primero antes de cualquier ayuda en el foro
- Cuando te hacemos preguntas para entender mejor tu problema, no es necesario que respondas rápidamente, cuando lo haces...
Así que si quieres seguir recibiendo ayuda de nuestra parte, un poco de paciencia y respeto.
Aparentemente, sí, el módulo está instalado en el entorno virtual de tu proyecto, vemos en la pila de llamadas que el error pasa por
Archivo "C:\Users\quent\PycharmProjects\pythonProject4\venv\Lib\site-packages\docx.py",
Luego, si seguimos la pila, parece que está utilizando el módulo Random.
No lo he verificado y no tengo tiempo ahora, pero el camino de llamada me sorprende.
¿No habrás tenido la mala idea de escribir tu propio módulo random, con un error dentro?
En mi PC que tiene Pycharm, tengo 2 archivos que se llaman random.py pero
- no están organizados en una carpeta que parezca una carpeta personal
- los comentarios no están en francés.
Así que reformulo mi pregunta, ¿eres tú quien escribió el archivo "C:\Users\quent\PycharmProjects\pythonProject\random.py"
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns
Entonces, por una razón que desconozco, pycharm cree que el módulo random es tu archivo y no el original.
Hay que asegurarse de que se tenga en cuenta el verdadero, tal vez reinstalarlo.
En cuanto a
He copiado solo el inicio del código, tengo un error con "error de sintaxis" en la línea 2.
sí, es doblemente evidente, primero porque en tu otro programa es exactamente lo que te dice el mensaje de error. Y además un comentario comienza con #.
Cuando era pequeño, el mar Muerto solo estaba enfermo.
George Burns
He eliminado el archivo Random.py en mi explorador de Windows (después de haberlo guardado en otro lugar), y al probar mi código L'ANGE_GABRIEL.py, aún hay errores:
Archivo "C:\Users\quent\PycharmProjects\pythonProject\L'ANGE_GABRIEL.py", línea 1, en <module>
import docx
Archivo "C:\Users\quent\PycharmProjects\pythonProject4\venv\Lib\site-packages\docx.py", línea 30, en <module>
from exceptions import PendingDeprecationWarning
ModuleNotFoundError: No hay ningún módulo llamado 'exceptions'
¿De otro modo, con qué comando en la consola reinstalo Random?
Hola,
No he leído todo, así que mis disculpas si lo que digo es una repetición:
- Como se explica en este enlace, para versiones modernas de python, hay que instalar python-docx y no docx. Esto resolverá el error que mencionas en #28.
pip remove docx pip install python-docx
- Con respecto a #26 y el nombramiento de tu función
- Un nombre de función en python no debe contener espacios.
- Desaconsejo muy fuertemente el uso de caracteres no ASCII (típicamente caracteres acentuados). Así que renombra tu función "générer un nombre aléatoire" a "generar_un_numero_aleatorio". Si realmente quisieras usar caracteres unicode, tu archivo debería comenzar con el encabezado adecuado. Ejemplo:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- def f(): print("Hello world") - Recomiendo nombrar las funciones en inglés, eso permite adquirir buenos hábitos para más adelante y de facto no se utilizan caracteres acentuados.
- En tu caso particular, la función que buscas implementar es probablemente random.randint.
from random import randint n = randint(1, 10) # 1 <= n <= 10
- En lugar de hacer capturas de pantalla de tu pila de llamadas, copia y pega la en su totalidad (como lo hiciste en #28). Gracias también por ponerla en una sección de código como se explica aquí.
Buena suerte
Archivo "C:\Users\quent\AppData\Local\Programs\Python\Python312\Lib\code.py", línea 63, en runsource código = self.compile(source, filename, symbol) Archivo "C:\Users\quent\AppData\Local\Programs\Python\Python312\Lib\codeop.py", línea 153, en __call__ return _maybe_compile(self.compiler, source, filename, symbol) Archivo "C:\Users\quent\AppData\Local\Programs\Python\Python312\Lib\codeop.py", línea 73, en _maybe_compile return compiler(source, filename, symbol)
pip list :
Archivo "C:\Users\quent\AppData\Local\Programs\Python\Python312\Lib\code.py", línea 63, en runsource code = self.compile(source, filename, symbol) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Archivo "C:\Users\quent\AppData\Local\Programs\Python\Python312\Lib\codeop.py", línea 153, en __call__ return _maybe_compile(self.compiler, source, filename, symbol) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Archivo "C:\Users\quent\AppData\Local\Programs\Python\Python312\Lib\codeop.py", línea 73, en _maybe_compile return compiler(source, filename, symbol) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Archivo "C:\Users\quent\AppData\Local\Programs\Python\Python312\Lib\codeop.py", línea 118, en __call__ codeob = compile(source, filename, symbol, self.flags, True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Archivo "<input>", línea 1 pip list ^^^^
Puede que Pycharm tenga un error, quizás debería desinstalarlo y reinstalarlo? ¿Guardando mis proyectos?
He abierto un proyecto en PyCharm en el que tengo docx.
Con el gestor de paquetes (como te mostró @Diablo76 EstadoMiembro), lo veo en la lista de componentes instalados

¿Lo ves?
Te pregunto esto porque más arriba tu traza de error parecía pasar por este paquete. Así que quizás no era el paquete correcto como sugirió @mamiemando EstadoModerador
En ese caso, tal vez sería mejor desinstalarlo primero.
A la derecha del gestor de paquetes, puedes hacer clic en los 3 puntos
Cuando hago "pip list" en la terminal, tengo:
Archivo "<frozen runpy>", línea 198, en _run_module_as_main
Archivo "<frozen runpy>", línea 88, en _run_code
Archivo "C:\Users\quent\PycharmProjects\pythonProject1\venv\Scripts\pip.exe\__main__.py", línea 4, en <module>
Archivo "C:\Users\quent\PycharmProjects\pythonProject1\venv\Lib\site-packages\pip\_internal\cli\main.py", línea 9, en <module>
from pip._internal.cli.autocompletion import autocomplete
Archivo "C:\Users\quent\PycharmProjects\pythonProject1\venv\Lib\site-packages\pip\_internal\cli\autocompletion.py", línea 10, en <module>
from pip._internal.cli.main_parser import create_main_parser
Archivo "C:\Users\quent\PycharmProjects\pythonProject1\venv\Lib\site-packages\pip\_internal\cli\main_parser.py", línea 8, en <module>
from pip._internal.cli import cmdoptions
Archivo "C:\Users\quent\PycharmProjects\pythonProject1\venv\Lib\site-packages\pip\_internal\cli\cmdoptions.py", línea 23, en <module>
from pip._internal.cli.parser import ConfigOptionParser
Archivo "C:\Users\quent\PycharmProjects\pythonProject1\venv\Lib\site-packages\pip\_internal\cli\parser.py", línea 12, en <module>
from pip._internal.configuration import Configuration, ConfigurationError
Archivo "C:\Users\quent\PycharmProjects\pythonProject1\venv\Lib\site-packages\pip\_internal\configuration.py", línea 20, en <module>
from pip._internal.exceptions import (
Archivo "C:\Users\quent\PycharmProjects\pythonProject1\venv\Lib\site-packages\pip\_internal\exceptions.py", línea 7, en <module>
from pip._vendor.pkg_resources import Distribution
Archivo "C:\Users\quent\PycharmProjects\pythonProject1\venv\Lib\site-packages\pip\_vendor\pkg_resources\__init__.py", línea 2164, en <module>
register_finder(pkgutil.ImpImporter, find_on_path)
^^^^^^^^^^^^^^^^^^^
AttributeError: el módulo 'pkgutil' no tiene el atributo 'ImpImporter'. ¿Quisiste decir: 'zipimporter'?
El problema parece estar relacionado con python3.12 (ver aquí). Esta discusión sugiere regresar a python3.11 o adoptar esta solución.
Gracias a Whismeril, goulu y mamiemando por interesarse en mi problema. Desinstalé python 3.12 e instalé python 3.11. Cuando hago pip install python-docx, obtengo:
(venv) PS C:\Users\quent\PycharmProjects\pythonProject> pip install python-docx
No Python en '"C:\Users\quent\AppData\Local\Programs\Python\Python312\python.exe'
(venv) PS C:\Users\quent\PycharmProjects\pythonProject>
Python está instalado en el C de app data, local, durante la instalación, al principio, marqué "instalar el path", en la parte inferior, una opción, ¿podría venir de ahí?
¿Y si copias y pegas el camino en el área de texto de la ventana de exploración?
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns
He logrado instalar el intérprete de python 311 creando un nuevo proyecto. Sin embargo, al escribir en la terminal de Pycharm: pip install python-docx, tengo esto:
No Python at '"C:\Users\quent\AppData\Local\Programs\Python\Python312\python.exe' ¡La versión 312 está desinstalada! Finalmente, me queda esto:
Hola Mamiemando,
Gracias por haber cerrado el tema. Pero no lo hice porque aún tengo preguntas. He instalado pyinstaller en mi PC para ejecutar proyectos de Python desde cualquier PC que no tenga Python instalado. Funciona para otros archivos, pero no para el ángel_gabriel.
De hecho, en Pycharm se abre bien con las líneas que indiqué en el proyecto, pero quería que todo el contenido del archivo de texto se mostrara en la consola de ejecución de Pycharm. Luego, en otro PC, después de haberlo llevado a pyinstaller.
¿Es necesario añadir otras líneas de código para que se muestre en Pycharm? ¿Será posible hacer un archivo .exe a través de pyinstaller? ¡Gracias de nuevo por la ayuda!
Hola quentin2121: esta pregunta no está directamente relacionada con el tema inicial, así que debes plantear tu pregunta en una nueva discusión si deseas más detalles. Pero en esencia, o bien la máquina objetivo tiene un intérprete de Python y las dependencias necesarias para el tema, o debes transformar tu proyecto en un ejecutable "stand alone", por ejemplo, con pyinstaller.
-
Google fotos transferir
a las 14:47 -
Este mac no puede conectarse a icloud debido a un problema con (mi correo).
a las 14:30 -
Equivalente de audacity para android
a las 13:58 -
Reinstalación de w11 imposible tras fallo del pc...
a las 11:50 -
Problema de conexión de whatsapp
a las 11:47 -
Conectar reproductor de dvd externo a la tableta samsung
a las 11:39 -
Imposible leer los comentarios en facebook
a las 11:30 -
Problema de texturas en enshrouded
a las 11:10 -
Defender ¿cómo borrar los archivos de cuarentena?
a las 10:16 -
Vídeos transformados en imágenes - recuperación
a las 09:44














