【问题标题】:Python - Cannot Open .docx when I wrote a new line to itPython - 当我写一个新行时无法打开 .docx
【发布时间】:2022-10-23 17:37:56
【问题描述】:

只是学习如何在 python 中使用文件。我创建了一个 word 文档“mydoc.docx”,在执行以下代码之前正确打开:

myfile = open('mydoc.docx','w')
myfile.write ("hello"+'\n')
myfile.close()

运行上述代码后,word 文档无法再打开,显示“Word 在尝试打开文件时遇到错误”。

【问题讨论】:

  • 欢迎来到堆栈溢出。 Microsoft Word 将根据文件的扩展名对文件的格式做出假设。你写出来的东西会产生一些不是 DOCX 格式的东西。 Word 期望看到该格式,并且在找不到时会呕吐。将您正在写入的文件的扩展名更改为.txt,您会有更好的运气。

标签: python macos file ms-word


【解决方案1】:

这是预期的。 “docx”具有非常特定的结构(在幕后,它是一系列压缩文件),包括文档的文本,以及格式、元数据、更改历史等。

您使用 Python 程序编写的内容是纯文本文件。

【讨论】:

    【解决方案2】:

    我认为问题可能是带有open() 函数的python,将.docx 文件作为二进制或纯文本文件打开(但绝对不是.docx 文件),并且通过向其中写入数据,实际上会损坏它。

    如果您使用可以处理.docx 文件的库会更好。例如:docx library

    【讨论】:

      【解决方案3】:

      myfile = open('mydoc.docx','w')

      您没有以附加模式打开文件。您在这里所做的是完全清除文件,然后向其中写入新文本。
      您还需要使用二进制模式来打开这样的文件。

      此外,即使您确实将文本附加到文件的内容中,打开文件时也不太可能在文件中看到附加的文本。

      养成这样做的好习惯是在诊断此类问题时检查文件大小。如果您检查文件大小,我想它会是 6 或 7 个字节。 docx 文件要大得多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多