鱼C论坛

 找回密码
 立即注册
查看: 432|回复: 4

[已解决]递归

[复制链接]
发表于 2019-6-11 19:40:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个递归函数中应该怎么写调用函数条件?谢谢!
  1. import os

  2. def find(file):

  3.     os.chdir(os.curdir())
  4.    
  5.     all_files = os.listdir()

  6.     for i in all_files:

  7.         if i == file:

  8.             print(os.getcwd() + i)

  9.         if os.path.isdir(i):

  10.             #想问这里应该写什么语句

  11.             find(file)

  12.                
  13. file = input('请输入文件名:')

  14. find(file)
复制代码
最佳答案
2019-6-11 20:17:06
  1. import os

  2. def find(file, dir = '.'):

  3.     os.chdir(dir)
  4.    
  5.     all_files = os.listdir()

  6.     for i in all_files:

  7.         if i == file:

  8.             print(os.getcwd() + '\\' + i)

  9.         if os.path.isdir(i):

  10.             find(file, i)
  11.             os.chdir('..')

  12.                
  13. file = input('请输入文件名:')

  14. find(file)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-11 20:09:17 | 显示全部楼层
整个代码的思路都是错的。你看别人递归所有目录是怎么写的
  1. def gci(filepath):
  2. #遍历filepath下所有文件,包括子目录
  3.   files = os.listdir(filepath)
  4.   for fi in files:
  5.     fi_d = os.path.join(filepath,fi)            
  6.     if os.path.isdir(fi_d):
  7.       gci(fi_d)                  
  8.     else:
  9.       print(os.path.join(filepath,fi_d))
复制代码


再改成,查找文件

  1. import os

  2. def gci(file, filepath):
  3.     files = os.listdir(filepath)
  4.     for fi in files:
  5.         fi_d = os.path.join(filepath,fi)            
  6.         if os.path.isdir(fi_d):
  7.           gci(file, fi_d)                  
  8.         else:
  9.             if fi == file:
  10.                 print(os.path.join(filepath,fi))
  11.       
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-11 20:17:06 | 显示全部楼层    本楼为最佳答案   
  1. import os

  2. def find(file, dir = '.'):

  3.     os.chdir(dir)
  4.    
  5.     all_files = os.listdir()

  6.     for i in all_files:

  7.         if i == file:

  8.             print(os.getcwd() + '\\' + i)

  9.         if os.path.isdir(i):

  10.             find(file, i)
  11.             os.chdir('..')

  12.                
  13. file = input('请输入文件名:')

  14. find(file)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-12 07:26:34 | 显示全部楼层
ba21 发表于 2019-6-11 20:09
整个代码的思路都是错的。你看别人递归所有目录是怎么写的

哈哈  谢谢了   不过思路应该没问题  楼下就完全明白我的意思了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-12 10:26:12 | 显示全部楼层
第一浩男 发表于 2019-6-12 07:26
哈哈  谢谢了   不过思路应该没问题  楼下就完全明白我的意思了

好吧没问题,你就不要传目录进函数。
我想看看你的实现代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 17:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表