在找到某个文件之前,Python以递归方式遍历所有目录的最佳方法是什么? 我想查看目录中的所有文件,看看我正在寻找的文件是否在该目录中。 如果我找不到它,我会转到父目录并重复此过程。我也想数数 在找到文件之前我经历了多少个目录和文件。如果没有文件 循环结束返回没有文件
startdir ="用户/..../ file.txt"
findfile是文件名。这是我当前的循环,但我想使用递归使其工作。
def walkfs(startdir, findfile):
curdir = startdir
dircnt = 0
filecnt = 0
for directory in startdir:
for file in directory:
curdir = file
if os.path.join(file)==findfile:
return (dircnt, filecnt, curdir)
else:
dircnt+=1
filecnt+=1
答案 0 :(得分:3)
不要重新发明目录递归轮。只需使用os.walk()
function,它就可以循环遍历目录:
def walkfs(startdir, findfile):
dircount = 0
filecount = 0
for root, dirs, files in os.walk(startdir):
if findfile in files:
return dircount, filecount + files.index(findfile), os.path.join(root, findfile)
dircount += 1
filecount += len(files)
# nothing found, return None instead of a full path for the file
return dircount, filecount, None
答案 1 :(得分:0)
def findPath(startDir,targetFile):
file_count = 0
for i,(current_dir,dirs,files) in enumerate(os.walk(startDir)):
file_count += len(files)
if targetFile in files:
return (i,file_count,os.path.join(current_dir,targetFile))
return (i,file_count,None)
print findPath("C:\\Users\\UserName","some.txt")