在Python中搜索目录,包括可能存在或可能不存在的所有子目录。

时间:2016-03-21 21:43:21

标签: python os.path

我想在Python中搜索目录,包括可能存在或不存在的所有子目录

我看到很多例子,我们正在窥视的目录是已知的,例如:

os.path.exists(/dir1/myfile.pdf)

...但是,如果我想要的文件位于某些我不知道的任意子目录中,该怎么办?例如,上面的代码段永远无法在此处找到文件:

  

/ DIR1 / DIR2 / DIR3 /.../ dir20 / myfile.pdf

并且显然永远不会在没有显式运行该行20次的情况下进行概括,每个目录一次。

我想我正在寻找一个递归搜索,我不知道文件系统的确切结构(如果我说的那样)。

2 个答案:

答案 0 :(得分:1)

根据@idjaw的建议,请尝试os.walk(),如下所示:

import os
import os.path

for (dir,subdirs,files) in os.walk('/dir1'):
    # Don't go into the CVS subdir!
    if 'CVS' in subdirs:
        subdirs.remove('CVS')

    if 'myfile.pdf' in files:
        print("Found:", os.path.join(dir, 'myfile.pdf'))

答案 1 :(得分:0)

这是代码在pwd下面找到一个文件(在我的例子中是“wsgi.py”)

    import os
    for root, dirs, files in os.walk('.'):
       if "wsgi.py" in files:
           print root


./jg18/blog/blog
./goat/superlists/superlists
./jcg_blog/jcg_blog
./joelgoldstick.com.16/blog/blog
./blankdj19/blank/blank
./cp/cpblog/cpblog
./baseball/baseball_stats/baseball_stats
./zipcodes/zipcodes/zipcodes
./django.1.6.tut/mysite/mysite
./bits/bits/bits

如果文件只存在于一个目录中,它将列出一个目录