python课后30作业的最后一道代码题求大神解答
如下,这段代码是我自己写的,和小甲鱼的不一样。问题在于:当我把最后print程序放到函数内的时候,会打印如第一张图片,重复好几遍……但是装载数据的字典信息是正确的import os
import os.path
import re
key_word = input('请将该脚本放于待查找的文件夹内并输入关键字:')
location = input('请问是否需要打印关键字【'+key_word+'】在文件中的具体位置(yes/no):')
key_dict = {}
def find_file(word):
for each in os.listdir(os.curdir):
if os.path.isdir(each):
os.chdir(os.curdir + os.sep + each)
find_file(word)
os.chdir(os.pardir)
else:
if os.path.splitext(each)[-1] == '.txt':
with open(os.getcwd() + os.sep + each) as f:
count = 1
for line in f:
iter_line = list(re.finditer(word,line))
if iter_line:
key_dict.setdefault((os.getcwd() + os.sep + each), {})
key_dict.setdefault(count, [])
for each_1 in range(len(iter_line)):
key_dict.append(iter_line.span())
count += 1
else:
#f.readline()
count += 1
count = 0
'''
if key_dict:
for i in key_dict.keys():
print('在文件【%s】中找到关键字【%s】' %(i,key_word))
if location == 'yes':
for j, k in key_dict.items():
print('关键字出现在第{0}行,第'.format(j)+str(k)+'个位置')
'''
find_file(key_word)
if key_dict:
for i in key_dict.keys():
print('在文件【%s】中找到关键字【%s】' %(i,key_word))
if location == 'yes':
for j, k in key_dict.items():
print('关键字出现在第{0}行,第'.format(j)+str(k)+'个位置')
;
但我把该段程序放到函数外面的最后,就正常打印了。
求教有大神有空的麻烦解答一下,感激不尽!!!! 能直接指出你要问的是哪条语句嘛,你这代码实在看的眼花。 我还是个萌新,看不懂这样的代码好乱 看见封口费解放军解放迪斯科解放看来就打算理发i互动式佛iAHOK 本来没这么乱的……用小甲鱼的方式提交代码就这么乱了。。。这两个图片是我截图下来的程序,问题就出现在我注释掉的绿色几行,前面的程序是遍历所有文件夹和文件(如果文件夹内有文件或文件夹就会接着递归)打开判断里面的内容是否有指定的key word。这段程序是没问题的。问题就是绿色的我print数据的时候。如果我把绿色的程序放在函数体内(就是没有注释掉),就会出现下面的问题,有的字典key和value显示了好几遍,但放在函数体外print就没问题,显示正常了。求助大神,谢谢两位回我的帖子,代码上传出问题实在抱歉。 函数忘记return了……是在抱歉
页:
[1]