【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
这就是我所拥有的:
glob(os.path.join('src','*.c'))
但我想搜索src的子文件夹。 这样的事情会起作用:
glob(os.path.join('src','*.c'))
glob(os.path.join('src','*','*.c'))
glob(os.path.join('src','*','*','*.c'))
glob(os.path.join('src','*','*','*','*.c'))
但这显然是有限且笨拙的。
#1楼
Johan和Bruno针对上述最低要求提供了出色的解决方案。 我刚刚发布了Formic ,它实现了Ant FileSet和Globs ,可以处理这种情况以及更复杂的情况。 您的要求的实现是:
import formic
fileset = formic.FileSet(include="/src/**/*.c")
for file_name in fileset.qualified_files():
print file_name
#2楼
基于其他答案,这是我当前的工作实现,它在根目录中检索嵌套的xml文件:
files = []
for root, dirnames, filenames in os.walk(myDir):
files.extend(glob.glob(root + "/*.xml"))
我真的很喜欢python :)
#3楼
最近,我不得不恢复扩展名为.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)
#4楼
Johan Dahlin答案的简化版本,不带fnmatch 。
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']
#5楼
或具有列表理解:
>>> 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") ]
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3147329