该项目是在Windows 10上用Pycharm编写的。
我编写了一个程序,该程序从目录中获取.docx文件并搜索信息。在文件名列表的末尾,我得到以下文件:“〜$ 640188.docx”
当我点击此文件时,我收到此错误:
引发BadZipfile,“文件不是zip文件”
zipfile.BadZipfile:文件不是zip文件
当我尝试将文件'〜$ 640188.docx'放入docx2text方法过程中时,会发生此错误
text = docx2txt.process(r'C:\path\to\folder\~$640188.docx')
据我所见,此文件在我正在搜索的目录中或计算机上的任何位置都不存在。另一个奇怪的部分是,昨天我没有收到此错误。
我知道目录中有时会存在“隐藏”文件,我在Mac上遇到了以前的文件(特别是“ .DS_Store”),但这是一个.docx文件。
我目前有一个难看的解决方案,它说“如果您遇到'〜$ 640188.docx',请不要运行代码”。我担心的是,当我将11000个文件转储到目录中时,这将成为一个更大的问题。
此文件来自哪里?
下面是参考代码
import docx2txt
import os
check_files = []
for dir, subdir, files in os.walk(r'C:\path\to\folder'):
for file in files:
check_files.append(file)
for file in check_files:
print "file: {0}".format(file)
text = docx2txt.process(r'C:\path\to\folder\{0}'.format(file))
答案 0 :(得分:1)
以代字号开头的文件.docx
文件是Word进程使用的临时Word文件,不需要始终具有正确的zip软件包结构。您可以跳过这些。检查文件名是否以'~'
开头应该足够了。只需添加以下过滤条件即可:
check_files2 = [fl for fl in check_files if fl[0] != '~']
for file in check_files2: