DOCX преобразование файлов в текстовые файлы с использованием Python - PullRequest
0 голосов
/ 09 октября 2018

Я написал следующий код для преобразования моего файла docx в текстовый файл.Вывод, который я печатаю в моем текстовом файле, является последним абзацем / частью всего файла, а не полным содержимым.Код выглядит следующим образом:

from docx import Document
import io
import shutil

def convertDocxToText(path):
    for d in os.listdir(path):
        fileExtension=d.split(".")[-1]
        if fileExtension =="docx":
            docxFilename = path + d
            print(docxFilename)
            document = Document(docxFilename)


# for printing the complete document
            print('\nThe whole content of the document:->>>\n')
            for para in document.paragraphs:
                textFilename = path + d.split(".")[0] + ".txt"
                with io.open(textFilename,"w", encoding="utf-8") as textFile:
                    #textFile.write(unicode(para.text))
                    x=unicode(para.text)
                    print(x) //the complete content gets printed by this line
                    textFile.write((x)) #after writing the content to text file only last paragraph is copied.
                #textFile.write(para.text)

path= "/home/python/resumes/"
convertDocxToText(path)

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

следующее решение указанной проблемы:

from docx import Document
import io
import shutil
import os

def convertDocxToText(path):
    for d in os.listdir(path):
        fileExtension=d.split(".")[-1]
        if fileExtension =="docx":
            docxFilename = path + d
            print(docxFilename)
            document = Document(docxFilename)
            textFilename = path + d.split(".")[0] + ".txt"
            with io.open(textFilename,"w", encoding="utf-8") as textFile:
                for para in document.paragraphs: 
                    textFile.write(unicode(para.text))

path= "/home/python/resumes/"
convertDocxToText(path)
0 голосов
/ 09 октября 2018

Проблема

, как ваш код говорит в последнем цикле for:

        for para in document.paragraphs:
            textFilename = path + d.split(".")[0] + ".txt"
            with io.open(textFilename,"w", encoding="utf-8") as textFile:
                x=unicode(para.text)
                textFile.write((x))

для каждого абзаца во всем документе, вы пытаетесь открыть файл с именем textFilename, поэтому давайтескажем, у вас есть файл с именем MyFile.docx в /home/python/resumes/, поэтому значение textFilename, содержащее путь, будет /home/python/resumes/MyFile.txt всегда во всем цикле for, поэтому проблема в том, что вы открываете один и тот же файл в w mode, который является режимом Write и перезаписывает все содержимое файла.

Решение:

вы должны открыть файл один раз из цикла for, а затем попробовать добавить абзацы один за другимк этому.

...