我总得懂点什么 发表于 2021-2-6 18:13:15

《课后作业30讲》第4小题 对自己所写答案的报错

import os

def search(start_path,keywords):

    os.getcwd()

    namelst = os.listdir(os.curdir)

    for each_file in namelst:

      if os.path.isfile:

            if os.path.splitext(each_file) == '.txt':

                f = open(each_file)

                count = 0

                if keywords in f.read():

                  for eachline in f:

                        count += 1

                        address = eachline.index(keywords)

                        print('关键字出现在第%d行,第【%d】个位置n'%(count,address))

                  print('========================================================')

                f.close()

            if os.path.isdir:

                search(each_file,keywords)

                os.chdir(os.pardir)       #返回上一层

keywords = input('请将该脚本放于带查找的文件夹内,请输入关键字:')

start_path = os.getcwd()

search(start_path,keywords)




在运行测试的时候,返回
‘‘RecursionError: maximum recursion depth exceeded in comparison’‘
网上查询,有人说是递归层数太多,但我有返回上一层啊
{:5_94:}

qiuyouzhi 发表于 2021-2-6 18:30:26

if os.path.isdir:
你得调用啊..应该是
if os.path.isdir(eachfile):

我总得懂点什么 发表于 2021-2-6 20:48:51

qiuyouzhi 发表于 2021-2-6 18:30
你得调用啊..应该是

我改了之后又报错

UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 813039: illegal multibyte sequence

qiuyouzhi 发表于 2021-2-6 20:51:31

我总得懂点什么 发表于 2021-2-6 20:48
我改了之后又报错

UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 813039: ill ...

15行改成:
f = open(each_file, encoding = "utf-8")
还有11行,函数也没调用

我总得懂点什么 发表于 2021-2-6 21:26:17

qiuyouzhi 发表于 2021-2-6 20:51
15行改成:

还有11行,函数也没调用

i了i了那么耐心~可以了!!{:5_109:}{:5_95:}

qiuyouzhi 发表于 2021-2-6 21:36:40

我总得懂点什么 发表于 2021-2-6 21:26
i了i了那么耐心~可以了!!

如果问题已解决,请设置【最佳答案】

我总得懂点什么 发表于 2021-2-7 12:25:12

qiuyouzhi 发表于 2021-2-6 20:51
15行改成:

还有11行,函数也没调用

请问关于编码的知识点是在哪有介绍或者讲解?

永恒的蓝色梦想 发表于 2021-2-9 12:37:25

我总得懂点什么 发表于 2021-2-7 12:25
请问关于编码的知识点是在哪有介绍或者讲解?

……网上找,一搜一大堆
页: [1]
查看完整版本: 《课后作业30讲》第4小题 对自己所写答案的报错