Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归地遍历所有目录,直到在Python中找到某个文件_Python_File_Recursion_Directory - Fatal编程技术网

递归地遍历所有目录,直到在Python中找到某个文件

递归地遍历所有目录,直到在Python中找到某个文件,python,file,recursion,directory,Python,File,Recursion,Directory,Python中递归遍历所有目录直到找到某个文件的最佳方法是什么? 我想查看目录中的所有文件,看看我要查找的文件是否在该目录中。 如果找不到它,我将转到父目录并重复该过程。我还想数一数 在找到文件之前,我浏览了多少目录和文件。如果此时没有文件 循环结束时返回没有文件 startdir=“Users/…/file.txt” findfile是文件名。这是我当前的循环,但我想使用递归使其工作 def walkfs(startdir, findfile): curdir = startdir

Python中递归遍历所有目录直到找到某个文件的最佳方法是什么? 我想查看目录中的所有文件,看看我要查找的文件是否在该目录中。 如果找不到它,我将转到父目录并重复该过程。我还想数一数 在找到文件之前,我浏览了多少目录和文件。如果此时没有文件 循环结束时返回没有文件

startdir=“Users/…/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

不要重新发明目录递归轮。只需使用,它将为您提供一个递归遍历目录的循环:

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