【发布时间】:2012-03-14 07:55:12
【问题描述】:
我需要一个程序,它将文件名和文件夹的路径名作为参数,并直接或间接地搜索文件夹中的文件以及其中包含的任何文件夹。如果在文件夹或文件夹的任何子目录中找不到文件,该函数应返回文件的路径名(如果找到)或 None。该函数必须是递归的。
这是我的代码:
def search(fname, path):
for item in os.listdir(path):
next = os.path.join(path, item)
try:
search(next,fname)
except:
return next
它应该类似于以下内容:
>>>search('fileA.txt', 'test')
'test\\fileA.txt'
>>>search('fileB.txt', 'test')
'text\\folder2\\fileB.txt'
等。 但我只能让我的代码找到 fileA.txt,无论我告诉它要查找什么文件。
我向老师求助,这是她告诉我的:
**我看到几个问题:
- 您的函数中没有一个条件来实际检查您是否找到了文件。在着手改变这一点时,请参阅下一个问题。
- 如果您已经添加了路径,fname 将与对应的文件不匹配。在为文件创建完整路径名之前,您需要检查文件名,否则您将无法匹配它。
- 您不会对递归调用返回的值做任何事情。这些应该返回路径或无,并且您没有检查返回的内容。**
【问题讨论】:
-
你为什么使用
try/except?我想你正在寻找if/else。
标签: python file search recursion