|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
30课的第二题,用递归的方法,下面是我写的代码
- import os
- def find_file(file_dir,file_name):
- os.chdir(file_dir)
-
- for each in os.listdir(os.curdir):
- if each==file_name:
- print(os.getcwd()+os.sep+each)
- if os.path.isdir(each):
- find_file(file_dir,file_name)
- os.chdir(os.pardir)
- file_dir=input('请输入待查找的初始目录:')
- file_name=input('请输入需要查找的目标文件:')
- find_file(file_dir,file_name)
复制代码
下面是小甲鱼的代码
- import os
- def search_file(start_dir, target):
- os.chdir(start_dir)
- for each_file in os.listdir(os.curdir):
- if each_file == target:
- print(os.getcwd() + os.sep + each_file) # 使用os.sep是程序更标准
- if os.path.isdir(each_file):
- search_file(each_file, target) # 递归调用
- os.chdir(os.pardir) # 递归调用后切记返回上一层目录
- start_dir = input('请输入待查找的初始目录:')
- target = input('请输入需要查找的目标文件:')
- search_file(start_dir, target)
复制代码
我感觉,我的和小甲鱼的除了几个名字不一样外,别的都一样啊,为什么用他的就可以正常运行,我的就会报错RecursionError: maximum recursion depth exceeded while calling a Python object?
求大佬帮忙看下,谢谢了!
小甲鱼递归调用的是search_file(each_file, target),即每次调用都是下一级的目录,而你的find_file(file_dir,file_name)永远是file_dir陷入死循环。
|
|