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 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答