递归地遍历所有目录,直到在Python中找到某个文件
Python中递归遍历所有目录直到找到某个文件的最佳方法是什么? 我想查看目录中的所有文件,看看我要查找的文件是否在该目录中。 如果找不到它,我将转到父目录并重复该过程。我还想数一数 在找到文件之前,我浏览了多少目录和文件。如果此时没有文件 循环结束时返回没有文件 startdir=“Users/…/file.txt” findfile是文件名。这是我当前的循环,但我想使用递归使其工作递归地遍历所有目录,直到在Python中找到某个文件,python,file,recursion,directory,Python,File,Recursion,Directory,Python中递归遍历所有目录直到找到某个文件的最佳方法是什么? 我想查看目录中的所有文件,看看我要查找的文件是否在该目录中。 如果找不到它,我将转到父目录并重复该过程。我还想数一数 在找到文件之前,我浏览了多少目录和文件。如果此时没有文件 循环结束时返回没有文件 startdir=“Users/…/file.txt” findfile是文件名。这是我当前的循环,但我想使用递归使其工作 def walkfs(startdir, findfile): curdir = startdir
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
不要重新发明目录递归轮。只需使用,它将为您提供一个递归遍历目录的循环:
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
可能是
glob
模块或os.listdir
。我想他说他只是想回到他走的第一条路finds@JoranBeasley:是什么让你认为这不起作用。。。很抱歉我只是看到了计数的东西,就像一个白痴以为你在数比赛一样:P@JoranBeasley:我还想数一数在找到文件之前我浏览了多少目录和文件
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