你好我试着做点什么
// 1. for x in glob.glob('/../../nodes/*/views/assets/js/*.js'):
// 2 .for x in glob.glob('/../../nodes/*/views/assets/js/*/*.js'):
print x
Run Code Online (Sandbox Code Playgroud)
有什么办法可以回忆搜索吗?
我已经研究过使用Glob()在Python中递归查找文件?但是os.walk不接受节点和视图之间的上面的通配符文件夹,以及http://docs.python.org/library/glob.html那些非常有用的文档.
谢谢
警告:这也将选择任何与根文件夹下的节点匹配的文件,即节点/.
import os, fnmatch
def locate(pattern, root_path):
for path, dirs, files in os.walk(os.path.abspath(root_path)):
for filename in fnmatch.filter(files, pattern):
yield os.path.join(path, filename)
Run Code Online (Sandbox Code Playgroud)
由于os.walk不接受通配符,我们走树并过滤我们需要的东西.
js_assets = [js for js in locate('*.js', '/../../nodes')]
Run Code Online (Sandbox Code Playgroud)
locate函数产生与模式匹配的所有文件的迭代器.
替代解决方案:您可以尝试扩展的glob,它会向glob添加递归搜索.
现在你可以写一个更简单的表达式,如:
fnmatch.filter( glob.glob('/../../nodes/*/views/assets/js/**/*'), '*.js' )
Run Code Online (Sandbox Code Playgroud)