一个python Path.rglob模式,用于匹配目录中不在node_modules文件夹内的所有package.json文件
我正在处理一个非常大的单一代码库(monorepo),我想写一个脚本,从所有的 package.json 文件中获取一些信息,但我不想获取那些在 node_modules
文件夹里的 package.json 文件。我尝试了很多方法,除了在递归遍历整个目录后用正则表达式过滤这些文件,包括 node_modules
文件夹。我知道这样做是可行的,但我希望能在搜索之前就过滤掉这些目录,这样可以提高性能。这个单一代码库的结构大致是这样的:
root/
node_modules/
apps/
someApp/
node_modules/
someApp2/
node_modules/
packages/
somePackage1/
node_modules/
somePackage2/
node_modules/
somePackage3/
node_modules/
...
任何帮助都将非常感谢!谢谢。
1 个回答
1
我会遍历整个文件夹结构,跳过所有的 node_modules
文件夹。
这样做的效率会比去找所有的 package.json
文件,然后再根据路径筛选要高得多。
from os import walk
w = walk("/path/to/your/repo")
for(dir_path, dir_names, file_names) in w:
if dir_path.endswith('node_modules'):
continue
for file in file_names:
if file == 'package.json':
yield os.path.join(dir_path, file)