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

标签 python file recursion directory

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

最佳答案

不要重新发明目录递归轮。只需使用 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

关于python - Python中递归遍历所有目录,直到找到某个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39879638/

相关文章:

python - 在 Pandas 中重新格式化数据框

python - 在Python中删除EXIF数据?

python - 如何使用通过函数获得的用户输入来更改全局变量?

java - 最终的 java 应用程序的文件类型是什么?

sql - 在 postgres 中,ORDER BY 似乎在递归 cte 中不起作用

C 递归运行时错误

java - 迭代构造函数内存困惑

python - 如何将2个不同维度的numpy数组相乘

java - 将文件放置在文件系统中应触发 java 应用程序

C 将随机矩阵写入文件,然后使用格式化 I/O 从文件中读取和复制所述矩阵