这就是我所拥有的: python
glob(os.path.join('src','*.c'))
但我想搜索src的子文件夹。 这样的事情会起做用: python2.7
glob(os.path.join('src','*.c')) glob(os.path.join('src','*','*.c')) glob(os.path.join('src','*','*','*.c')) glob(os.path.join('src','*','*','*','*.c'))
但这显然是有限且笨拙的。 spa
Johan和Bruno针对上述最低要求提供了出色的解决方案。 我刚刚发布了Formic ,它实现了Ant FileSet和Globs ,能够处理这种状况以及更复杂的状况。 您的要求的实现是: code
import formic fileset = formic.FileSet(include="/src/**/*.c") for file_name in fileset.qualified_files(): print file_name
基于其余答案,这是我当前的工做实现,它在根目录中检索嵌套的xml文件: orm
files = [] for root, dirnames, filenames in os.walk(myDir): files.extend(glob.glob(root + "/*.xml"))
我真的很喜欢python :) xml
最近,我不得不恢复扩展名为.jpg的图片。 我运行了photorec并恢复了4579个目录,其中220万个文件具备多种扩展名。使用如下脚本,我可以在几分钟内选择50133个具备.jpg扩展名的文件: 图片
#!/usr/binenv python2.7 import glob import shutil import os src_dir = "/home/mustafa/Masaüstü/yedek" dst_dir = "/home/mustafa/Genel/media" for mediafile in glob.iglob(os.path.join(src_dir, "*", "*.jpg")): #"*" is for subdirectory shutil.copy(mediafile, dst_dir)
Johan Dahlin答案的简化版本,不带fnmatch 。 get
import os matches = [] for root, dirnames, filenames in os.walk('src'): matches += [os.path.join(root, f) for f in filenames if f[-2:] == '.c']
或具备列表理解: it
>>> base = r"c:\User\xtofl" >>> binfiles = [ os.path.join(base,f) for base, _, files in os.walk(root) for f in files if f.endswith(".jpg") ]