Ant 有一种很好的方法来选择文件组,最方便的是使用 ** 来指示目录树。例如
**/CVS/* # All files immediately under a CVS directory.
mydir/mysubdir/** # All files recursively under mysubdir
更多例子可以在这里看到:
http://ant.apache.org/manual/dirtasks.html
你将如何在 python 中实现它,以便你可以执行如下操作:
files = get_files("**/CVS/*")
for file in files:
print file
=>
CVS/Repository
mydir/mysubdir/CVS/Entries
mydir/mysubdir/foo/bar/CVS/Entries
最佳答案
抱歉,距离您的 OP 已经过去很长时间了。我刚刚发布了一个 Python 包,它就是这样做的——它叫做 Formic,可以在 PyPI Cheeseshop 获得。 .使用 Formic,您的问题可以通过以下方式解决:
import formic
fileset = formic.FileSet(include="**/CVS/*", default_excludes=False)
for file_name in fileset.qualified_files():
print file_name
有一个稍微复杂的地方:default_excludes。 Formic,就像 Ant 一样,默认情况下排除 CVS 目录(因为大多数情况下从中收集文件进行构建是危险的),问题的默认答案将导致没有文件。设置 default_excludes=False 会禁用此行为。
关于python - 你将如何在 python 中实现 ant-style patternsets 来选择文件组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/161755/