Python 如何在遍历树时忽略特定文件?

Python 如何在遍历树时忽略特定文件?,python,python-2.7,filenames,os.path,Python,Python 2.7,Filenames,Os.path,我想在使用os.walk(path)在目录中创建子树时忽略特定文件 但由于某些原因,我不希望解析某些文件。e、 g.包含大量文档的.git文件。我该怎么做 file_to_ignore = '.git' for dirname, dirnames, filenames in os.walk(path): for filename in filenames: if filename == file_to_ignore: continue else:

我想在使用
os.walk(path)
在目录中创建子树时忽略特定文件

但由于某些原因,我不希望解析某些文件。e、 g.包含大量文档的
.git
文件。我该怎么做

 file_to_ignore = '.git'
 for dirname, dirnames, filenames in os.walk(path):
     for filename in filenames:
         if filename == file_to_ignore: continue
         else: 
              #do somthing

使用
os
模块通过
os.path.splitext()
方法获取文件扩展名

如果我们想添加更多的ignore extension init,请创建ignore extension list

例如

真实情况:

>>> import os
>>> filename = "abc.git"
>>> ignore = ['.git', ]
>>> os.path.splitext(filename)
('abc', '.git')
>>> os.path.splitext(filename)[1] in ignore
True
>>> os.path.splitext("abc.txt")[1] in ignore
False
错误条件:

>>> import os
>>> filename = "abc.git"
>>> ignore = ['.git', ]
>>> os.path.splitext(filename)
('abc', '.git')
>>> os.path.splitext(filename)[1] in ignore
True
>>> os.path.splitext("abc.txt")[1] in ignore
False

.git
是一个目录,而不是一个文件。要忽略.git目录中的文件吗?请使用
dirnames[:]=[d for d in dirnames if d!='.git']
若要从考虑中删除该目录,请参阅副本以了解其工作原理。