在目录中递归查找给定文件

Find a given file recursively inside a directory

在目录中递归查找给定文件。我尝试的代码没有显示任何输出,尽管我有一个文件 C:\Users\anaveed\test\hoax\a.txt

代码下方

import glob
import os

os.chdir(r'C:\Users\anaveed\test')
for f in glob.iglob('a.txt', recursive=True):
    print(f)

无输出

看来你需要。

import glob

for f in glob.iglob(r'C:\Users\anaveed\test\**\a.txt', recursive=True):
    print(f)

这是另一种方法:

import os

path = r'C:\Users\anaveed\test'
filename = 'a.txt'
for root, dirs, files in os.walk(path):
    for name in files:
        if name == filename:
            print(os.path.join(root, name))

一些评论:

  1. 如果不指定通配符,则不需要使用glob,只需使用os.walk()
  2. 您无需移动到特定路径来查找其中的文件,只需将路径保存到变量中即可。
  3. 将它包装成一个函数会更好(也许使用列表理解)。
  4. glob 解决方案通常更快。