我想知道为什么我的代码打印两个相同的输出,即使我打印过一次。
我试图使用Python中的 python-docx 和 readDocx 模块阅读和编辑.docx文件,这本书来自一本名为Automate with Python的无聊内容的书。 Sweigart。
demo.docx 包含以下简单的6个文本行:
import docx, readDocx
def getText(filename):
doc = docx.Document(filename)
fullText = []
for para in doc.paragraphs:
fullText.append(' ' + para.text)
return '\n'.join(fullText)
print(readDocx.getText('demo.docx'))
输出:
Document Title
A plain paragraph with some bold and some italic
Heading, level 1
Intense quote
first item in unordered list
first item in ordered list
Document Title
A plain paragraph with some bold and some italic
Heading, level 1
Intense quote
first item in unordered list
first item in ordered list
我删除了这个文件,当重新运行程序时,它再次在文件夹名称 pycache
中创建答案 0 :(得分:3)
正如我在评论中提到的,您似乎正在导入正在执行的模块。 https://automatetheboringstuff.com/chapter13/中的代码示例(中间的某个地方)看起来与getText()函数完全相同,并且提到要保存到文件readDocx.py
导入时,将执行导入模块中的所有代码。导入行已经执行了您的文件,包括print()。
请在import语句中没有readDocx的情况下尝试一下,并考虑熟悉前面提到的__name__ == '__main__'
块
答案 1 :(得分:-1)
我不熟悉docx或readDocx导入,但正如Patrick在评论中提到的那样,您的定义与您在打印行中的调用名称相同。
即: 您已经定义了getText(),但之后将其用作readDocx下的函数。
readDocx的库中是否有getText? 尝试将getText定义的名称更改为其他名称,并尝试使用其他文档来查看是否得到相同的结果。