一段代码的问题,请求帮助
请求帮助,看了两个小时了这点代码改不对import os
import os.path as op
def find_name(name):
all_file = os.listdir(os.curdir)
for each_file in all_file:
if op.splitext(each_file) == '.txt':
f1 = open(each_file,'r')
count = 0
if name in each_file:
print('在文件【%s】中找到关键字【%s】'%(each_file,name))
for each_line in f1:
count += 1
if name in each_line:
print('关键字出现在%d行,第%s个位置'%(count,find_name(name,each_line)))
f1.close()
if op.isdir(each_file):
find_name(each_file)
os.chdir(os.pardir)
def find_num(name, string):
where = []
index = string.find(name)
while index != -1:
where.append(index + 1)
index = string.find(name, index+1)
return where
name1 = input('请将该脚本防御带查找的文件夹内,请输入关键字:')
choice = input('请问是否要打印关键字【%s】在文件夹中的具体位置(YES/NO):'%(name1))
if choice == 'YES'or choice == 'yes':
find_name(name1)
一直报我递归的错。。。。18 行和 32 行 本帖最后由 Twilight6 于 2020-7-16 20:17 编辑
大地郡主 发表于 2020-7-16 19:06
不是小甲鱼的源码,是我在写他的作业,改了还是不行,肯定是代码有问题
代码很多错误,帮你改了,你自己对照着看看吧:
import os
import os.path as op
def find_name(name):
all_file = os.listdir(os.curdir)
for each_file in all_file:
if op.splitext(each_file) == '.txt':
f1 = open(each_file)
count = 0
temp = []
file_path = True
for each_line in f1:
count += 1
if name in each_line:
temp = find_num(name,each_line)
if temp != []:
if file_path:
print('|----文件 %s' % os.getcwd() + op.sep + each_file)
file_path = False
print('|-关键字出现在%d行,第%s个位置' % (count,temp))
f1.close()
if op.isdir(each_file):
os.chdir(each_file)
find_name(name)
os.chdir(os.pardir)
def find_num(name, string):
where = []
index = string.find(name)
while index != -1:
where.append(index + 1)
index = string.find(name, index+1)
return where
name1 = input('请将该脚本防御带查找的文件夹内,请输入关键字:')
choice = input('请问是否要打印关键字【%s】在文件夹中的具体位置(YES/NO):'%(name1))
if choice == 'YES'or choice == 'yes':
find_name(name1) 请把报错信息发上来 _2_ 发表于 2020-7-16 18:52
请把报错信息发上来
Traceback (most recent call last):
File "E:/测试代码/030 4.py", line 32, in <module>
find_name(name1)
File "E:/测试代码/030 4.py", line 18, in find_name
find_name(each_file)
File "E:/测试代码/030 4.py", line 18, in find_name
find_name(each_file)
File "E:/测试代码/030 4.py", line 18, in find_name
find_name(each_file)
File "E:/测试代码/030 4.py", line 7, in find_name
if op.splitext(each_file) == '.txt':
File "C:\Users\巴鲁斯\AppData\Local\Programs\Python\Python38\lib\ntpath.py", line 208, in splitext
return genericpath._splitext(p, '\\', '/', '.')
File "C:\Users\巴鲁斯\AppData\Local\Programs\Python\Python38\lib\genericpath.py", line 131, in _splitext
sepIndex = max(sepIndex, altsepIndex)
RecursionError: maximum recursion depth exceeded in comparison 大地郡主 发表于 2020-7-16 18:53
Traceback (most recent call last):
File "E:/测试代码/030 4.py", line 32, in
find_name(nam ...
你超过了最大递归深度
找一个相对文件较少的目录(os.chdir())或者修改递归深度(sys) _2_ 发表于 2020-7-16 18:55
你超过了最大递归深度
找一个相对文件较少的目录(os.chdir())或者修改递归深度(sys)
可是我专门建立了一个文件,里面只有三个文本文件,这段代码.py文件,还有一个文件夹,文件夹里也只有一个文本文件,这应该不会超深度阿 大地郡主 发表于 2020-7-16 18:53
Traceback (most recent call last):
File "E:/测试代码/030 4.py", line 32, in
find_name(nam ...
在程序开头加上这两句试试?
import sys
sys.setrecursionlimit(9999999) 大地郡主 发表于 2020-7-16 19:00
可是我专门建立了一个文件,里面只有三个文本文件,这段代码.py文件,还有一个文件夹,文件夹里也只有一 ...
应该是递归逻辑有点问题(是不是小甲鱼的源码?)
总感觉报 超出递归深度 有点蹊跷
要不还是改一下递归深度吧(sys) zltzlt 发表于 2020-7-16 19:01
在程序开头加上这两句试试?
不行,加了后什么都打不出来,应该是在递归出不来了 _2_ 发表于 2020-7-16 19:02
应该是递归逻辑有点问题(是不是小甲鱼的源码?)
总感觉报 超出递归深度 有点蹊跷
要不还是改一下递归深 ...
不是小甲鱼的源码,是我在写他的作业{:10_243:},改了还是不行,肯定是代码有问题 谢谢您,帮了我好几次了{:10_281:}
页:
[1]