如何修复'TypeError:__init __()缺少1个必需的位置参数:python中的'part'错误

时间:2019-09-07 15:03:24

标签: python python-docx

控制台不断告诉我,说缺少一个参数。

"D:\Program Files (x86)\Python\python.exe" D:/workspace/Glossary_Builder_Python/main.py
Please input the file path
C:\Users\Administrator\Desktop\Allergies.docx
Traceback (most recent call last):
  File "D:/workspace/Glossary_Builder_Python/main.py", line 102, in <module>
    main(sys.argv)
  File "D:/workspace/Glossary_Builder_Python/main.py", line 98, in main
    extractWdFrmDocx(filepath)
  File "D:/workspace/Glossary_Builder_Python/main.py", line 18, in extractWdFrmDocx
    document = Document(file)
TypeError: __init__() missing 1 required positional argument: 'part'

我正在尝试使用python-docx和python 3.7从docx文件中提取一些突出显示的(黄色)文本。 当我进入文档功能时,__init__如下所示:

def __init__(self, element, part):
    super(Document, self).__init__(element)
    self._part = part
    self.__body = None

那么在这里,“零件”是干什么的?

下面是提取功能和主要功能:

def extractWdFrmDocx(filepath):
    # self.filepath = filepath
    document = Document(filepath)
    for para in document.paragraphs:
        for run in para.runs:
            if run.font.highlight_color == WD_COLOR_INDEX.YELLOW:
                keyText.append(run.text)
    print(keyText)


def main(argv):
    print("Please input the file path")
    filepath = input()
    extractWdFrmDocx(filepath)


if __name__ == "__main__":
    main(sys.argv)

1 个答案:

答案 0 :(得分:1)

可能是您从Document导入了docx.document。您不应该直接构造这样的Document对象。而是以Document的形式提供了用于创建docx.Document对象的函数,该函数需要一个参数,即您现在使用它的方式。

因此您的代码应为:

import docx

[...]

document = docx.Document(filepath)

From documentation of python-docx:

  

文档对象

     

docx.document.Document类

     

[...]

     

不打算直接构造。使用docx.Document()打开或创建一个文档。