我想在Python中搜索目录,包括可能存在或不存在的所有子目录。
我看到很多例子,我们正在窥视的目录是已知的,例如:
os.path.exists(/dir1/myfile.pdf)
...但是,如果我想要的文件位于某些我不知道的任意子目录中,该怎么办?例如,上面的代码段永远无法在此处找到文件:
/ DIR1 / DIR2 / DIR3 /.../ dir20 / myfile.pdf
并且显然永远不会在没有显式运行该行20次的情况下进行概括,每个目录一次。
我想我正在寻找一个递归搜索,我不知道文件系统的确切结构(如果我说的那样)。
答案 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
如果文件只存在于一个目录中,它将列出一个目录