|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我写的代码提示MemoryError,但是用甲鱼的答案却不会有这种情况,求助问题出在了哪里?怎么解决
- import os
- def search(key):
- files = os.walk(os.getcwd()) # 列出路径中的每一个文件
- txt = [] # 空的列表用于放txt文件
- for each_file in files:
- for each in each_file[2]: # 文件后缀判断是不是txt
- if os.path.splitext(each)[1] == '.txt':
- txt.append(os.path.join(each_file[0], 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[i]: # 对于列表中的每一个元素查找关键字
- pos = []
- local.setdefault(i + 1, 0)
- begin = f_search[i].find(key) # 查找关键字第一次出现的位置
- while begin != -1:
- pos.append(begin + 1)
- begin = f_search[i].find(key, begin) # 查找后续出现的位置
- local[i + 1] = 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[each_key])))
- key = input('请将该脚本放入待查找的文件夹内,请输入关键字:')
- choose = input('请问是否需要打印关键字【%s】在文件中出现的具体位置(YES/NO):' % key)
- search(key)
复制代码 |
|