|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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)
|
|