如何在gitignore中列出不包括文件的目录文件



我正在尝试列出所有目录文件,但没有来自.gitignore.的文件(或模式(

例如,脚本在main目录中运行:

# .gitignore
dir2/
py.cache
# directory structure
.
├── .gitignore
├── subdir
│   ├── dir1
│   │   ├── file1
│   │   └── py.cache
│   └── dir2
│       ├── file2
│       └── py.cache
└── pydir
├── script.py
└── py.cache

预期结果是:

[Path("subdir/dir1/file1"), Path("pydir/script.py")]

我正在寻找类似的东西:

Path(".").iterdir(include_gitignore=True)
# or
for p in Path(".").iterdir():
if p not in gitignore:
# ...

像这样的一些代码应该可以工作:

from fnmatch import fnmatch
files = Path("directoryToList").iterdir()
with open(".gitignore") as gitignore_file:
gitignore = [line for line in gitignore_file.read().splitlines() if line]
filenames = (file for file in files 
if not any(fnmatch(file, ignore) for ignore in gitignore))

最新更新