zhangauckland 2020-07-03 09:28 采纳率: 0%
浏览 162
已采纳

想搜索一特定目录下word文档中的关键词,但一直出现 'utf-8' codec can't decode

请教各位前辈:我想用python搜索一特定目录下(D:\test\)的word文档中的一个关键词(Shengaiwei)。
#!/usr/bin/python
#coding:utf8
import os

#判断文件中是否包含关键字,是则将文件路径打印出来
def is_file_contain_word(file_list, query_word):
for _file in file_list:
#if query_word in open(_file,'r',encoding = 'gbk').read():
if query_word in open(_file,'r',encoding='UTF-8'or'gbk').read():
#line.decode("utf8","ignore")#我后加的好像也不起作用
print (_file)
print("Finish searching.")

#返回指定目录的所有文件(包含子目录的文件)

def get_all_file(floder_path):
file_list = []
if floder_path is None:
raise Exception("floder_path is None")
for dirpath, dirnames, filenames in os.walk(floder_path):
for name in filenames:
file_list.append(dirpath + '\' + name)
return file_list

query_word = input("Please input the key word that you want to search:")

basedir = input("Please input the directory:")

is_file_contain_word(get_all_file(basedir), query_word)

input("Press Enter to quit.")
运行后按照要求我输入了关键词:Shengaiwei
然后输入目录文件夹:D:\test\
系统提示错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 14: invalid continuation byte

开始我是用: if query_word in open(_file).read():
后来用:if query_word in open(_file,'r',encoding='UTF-8'or'gbk').read():
和 if query_word in open(_file,'r',encoding='UTF-8').read():
但都没有解决问题。
为了简化操作,我目前这个目录下的文件包括文件名和文件的内容还都用的是英文的,但还是出现错误。请前辈指点,谢谢!

  • 写回答

1条回答 默认 最新

  • 代码的灵魂是bug! 2020-07-03 09:48
    关注
    1. 操作word文档可以安装docx库;https://blog.csdn.net/qq_37648632/article/details/81661007

    2. 关键词查找可以用正则的方式去匹配word的内容

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作