muxuehan9201 发表于 2021-11-20 17:45:49

lightninng 发表于 2021-11-20 18:01:44

本帖最后由 lightninng 于 2021-11-20 18:02 编辑

看报错最后两行,倒数第一行是告诉你为啥错,翻译过来就是没找到"新建文本文档.txt";倒数第二行是出错的语句 f = open(each,encoding='gbk',errors='ignore'),然后回过头看下你的代码
def serch(path,keyword):
    for each in os.listdir(path):
      each_file = os.path.join(path,each)
      if os.path.splitext(each) == '.txt':
            f = open(each,encoding='gbk',errors='ignore')
............

从条件判断语句可知,each确实是一个文本文档的名字,而且从报错情况可以看出这个文档叫"新建文本文档.txt",那么问题在哪,我们看下你代码中的几个文件路径
def serch(path,keyword):
    for each in os.listdir(path):                                 # each是os.listdir方法返回的列表中的文件和文件夹名,如果直接拿来用是相对路径
      each_file = os.path.join(path,each)                     # each_file 是你用path和each拼接出来的绝对路径
      if os.path.splitext(each) == '.txt':                     
            f = open(each,encoding='gbk',errors='ignore')         #这句报错,说明用相对路路径读取文件出错,问题在哪很明显了吧
............


PS:同样的问题在后面的代码中也有一个地方需要修改,自己思考一下把。加油~~~

z5560636 发表于 2021-11-20 18:08:17

f = open(each,encoding='gbk',errors='ignore')

# 改成
f = open(each_file,encoding='gbk',errors='ignore')

参数传错了。

muxuehan9201 发表于 2021-11-20 20:03:08

页: [1]
查看完整版本: Python 30讲第4题 自己写的程序有不知名错误求助!