丿autistic 发表于 2020-6-18 22:12:47

关于课后作业030讲第4题

我写的代码提示MemoryError,但是用甲鱼的答案却不会有这种情况,求助问题出在了哪里?怎么解决{:5_100:}
import os


def search(key):
    files = os.walk(os.getcwd())# 列出路径中的每一个文件
    txt = []# 空的列表用于放txt文件
    for each_file in files:
      for each in each_file:# 文件后缀判断是不是txt
            if os.path.splitext(each) == '.txt':
                txt.append(os.path.join(each_file, each))

    for each_txt in txt:# 对于每一个txt文件
      f = open(each_txt)
      f_all = f.read()
      if key in f_all:
            f.seek(0, 0)
            f_search = list(f.readlines())# 以列表形式列出每一行
            f.close()
            local = dict()# 空的字典用于放位置
            for i in range(len(f_search)):
                if key in f_search:# 对于列表中的每一个元素查找关键字
                  pos = []
                  local.setdefault(i + 1, 0)
                  begin = f_search.find(key)# 查找关键字第一次出现的位置
                  while begin != -1:
                        pos.append(begin + 1)
                        begin = f_search.find(key, begin)# 查找后续出现的位置
                  local = pos
                  if choose.upper() == 'YES':
                        print('==========')
                        print('在文件【%s】中找到关键字【%s】' % (each_txt, key))
                        for each_key in local.keys():
                            print('关键字出现在第【%s】行,第【%s】个位置' % (each_key, str(local)))

key = input('请将该脚本放入待查找的文件夹内,请输入关键字:')
choose = input('请问是否需要打印关键字【%s】在文件中出现的具体位置(YES/NO):' % key)
search(key)

徐颖科 发表于 2020-6-18 22:46:40

 运行没错误。给一下具体的截图?

丿autistic 发表于 2020-6-19 18:18:05

徐颖科 发表于 2020-6-18 22:46
 运行没错误。给一下具体的截图?


显示这样的,是我的电脑问题吗?你运行我的程序能输出正确结果吗?

丿autistic 发表于 2020-6-19 18:18:52

徐颖科 发表于 2020-6-18 22:46
 运行没错误。给一下具体的截图?

就是这样
页: [1]
查看完整版本: 关于课后作业030讲第4题