Discuss / Python / 求大神解答

求大神解答

Topic source

力弹则折

#1 Created at ... [Delete] [Delete and Lock User]
import os,sys,pdb

def findFile(filename, dir='.'):
    for d in os.listdir(dir):
        subDir = os.path.join(os.path.abspath(dir), d)
        if os.path.isdir(d):
            findFile(filename, subDir)     
        if filename in d:
            return subDir
    return None

请问,为什么 if filename in d: return subDir 中的return语句不会执行?

if filename in d: return subDir 你看看你的逻辑里面,这个return是不是返回了findFile(filename, subDir),而不是最终的返回。也就是说接下来还要继续执行下面这一段 if filename in d: return subDir

改成这样才对 import os,sys,pdb

def findFile(filename, dir='.'): i=0 for d in os.listdir(dir): subDir = os.path.join(os.path.abspath(dir), d) if os.path.isdir(d): findFile(filename, subDir)

    if filename in d:
        print(subDir)
        #return subDir
return None

tomtiddler

#4 Created at ... [Delete] [Delete and Lock User]
    if os.path.isdir(d):
        if findFile(filename, subDir) != None:
            return findFile(filename, subDir)

花了一上午看这个,总算搞出个半成品。不支持子目录下多个文件包含filename的情况。

tomtiddler

#5 Created at ... [Delete] [Delete and Lock User]

import os,sys,pdb

l = []

def findFile(filename, dir='.'): for d in os.listdir(dir): subDir = os.path.join(os.path.abspath(dir), d) if os.path.isdir(d): findFile(filename, subDir) elif filename in d: l.append(subDir)

findFile('logging') print(l)

包含多个filename的情况。


  • 1

Reply