這就是我所擁有的: 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") ]