|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
照着小甲鱼老师的参考答案,一步步写完的代码如下,但是执行之后的结果总是重复打印多次结果, 麻烦帮我看下是哪里出了问题,谢谢!
- def keyword_search(keyword,order):
- import os
- all_files = os.walk(os.getcwd())
- txt_files = []
-
- for each_tuple in all_files:
- for each_file in each_tuple[2]:
- if os.path.splitext(each_file)[1] == '.txt':
- each_file = os.path.join(each_tuple[0],each_file)
- txt_files.append(each_file)
-
- for each_txt in txt_files:
- key_dict = search_in_file(each_txt,keyword)#函数search_in_file生成行与位置的字典
- if key_dict:#如果这个字典非空,即存在这个字典
- print('=================================================')
- print('在文件【%s】中找到关键字【%s】' % (each_txt,keyword))
- if order.upper() == 'YES':
- print_pos(key_dict)#函数print_pos打印字典
- def search_in_file(file_name,keyword):
- key_dict = dict()
- count = 0
- file = open(file_name)
-
- for each_line in file:
- count += 1
- if keyword in each_line:
- key_dict[count] = search_in_line(each_line,keyword)#函数search_in_line,生成关键字在行中的位置列表
- file.close()
- return key_dict
-
- def search_in_line(line,keyword):
- keylist = []
- begin = line.find(keyword)
- while begin != -1:
- keylist.append(begin+1)
- begin = line.find(keyword,begin+1)
- return keylist
-
- def print_pos(key_dict):
- keys = key_dict.keys()
- keys = sorted(keys)
- for each in keys:
- print('关键字出现在第%d行,第%s个位置。' % (each,str(key_dict[each])))
-
- keyword = input('请将该代码放于待查找的文件夹内,请输入关键字:')
- order = input('请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):' % keyword)
- keyword_search(keyword,order)
复制代码
找到原因了,12行多了一个缩进……太粗心了 
|
|