|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 hyftee 于 2017-6-20 21:54 编辑 import os
'''该函数用于读取并记录含有关键字的行和位置信息,并返回'''
def searchkey(txt_name,key_name):
temp=open(txt_name)
line = 0
display=''
for each in temp:
line +=1
result= ' '
if key_name in each:
p=each.find(key_name,0)
while p != -1:
result =result + str(p+1) + ','
p=each.find(key_name,p+1)
display=display+'关键字出现在第%d行,第[%s]个位置.'%(line,result)+'\n'
temp.close()
return(display)
'''该函数用于查找文件夹中的每个文件,若文件后缀为txt.在调用searchkey函数,并记录文件位置'''
def searchtxt(key_name,search_result):
for each in os.listdir(os.curdir):
if os.path.isdir(each):
os.chdir(each)
searchtxt(key_name,search_result)
os.chdir(os.pardir)
elif os.path.splitext(each)[1] == '.txt':
if searchkey(each,key_name) is not '':
search_result=search_result + '==========================================\n'
search_result=search_result +'在文件['+os.getcwd()+os.sep+each+']中找到关键字'+'[%s]'%(key_name)+'\n'
search_result=search_result + searchkey(each,key_name)
'''print(search_result)'''
'''这个位置我用print查看,发现信息是有记录的,但是search_result这个变量好像在某个位置被重新覆盖了'''
return(search_result)
key_name = input('请将该脚本放于待查找的文件夹内,请输入关键字:')
result=''
result=searchtxt(key_name,result)
print(result)
在答题中,我是采用将记录全部储存到 result这个变量里,再一次读取出来,但是最后输出结果只有一条信息,我在searchtxt()这个自定义函数内部用print()输出发现值都是有存储记录的,但是在某个位置被覆盖了,请教大家这个问题应该如何解决比较好
============================================================
更改后的代码如下 不再将要传出的结果search_result定义为函数的一个参数,将search_result作为一个全局变量再函数中做修改
import os
def searchkey(txt_name,key_name):
temp=open(txt_name)
line = 0
display=''
for each in temp:
line +=1
result= ' '
if key_name in each:
p=each.find(key_name,0)
while p != -1:
result =result + str(p+1) + ','
p=each.find(key_name,p+1)
display=display+'关键字出现在第%d行,第[%s]个位置.'%(line,result)+'\n'
'''print(display)'''
temp.close()
return(display)
def searchtxt(key_name):
for each in os.listdir(os.curdir):
global search_result
if os.path.isdir(each):
os.chdir(each)
searchtxt(key_name)
os.chdir(os.pardir)
elif os.path.splitext(each)[1] == '.txt':
if searchkey(each,key_name) is not '':
search_result=search_result + '==========================================\n'
search_result=search_result +'在文件['+os.getcwd()+os.sep+each+']中找到关键字'+'[%s]'%(key_name)+'\n'
search_result=search_result + searchkey(each,key_name)
return(search_result)
key_name = input('请将该脚本放于待查找的文件夹内,请输入关键字:')
search_result=''
search_result=searchtxt(key_name)
print(search_result)
|
|