zhangswufe
zhangswufe
2020-07-03 09:28
采纳率: 100%
浏览 142

想搜索一特定目录下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条回答 默认 最新

相关推荐