如何在Python中递归遍历时跳过.hg/.git/.svn目录
我有一个Python脚本,这个脚本是我自己一点一点拼凑起来的(这是我第一次尝试Python)。
这个脚本会递归地搜索一个文件夹,寻找XCode项目文件;这个脚本运行得很好,但我想改进一下,让它跳过任何以.svn(或者.hg或.git)开头的文件夹,这样就不会去修改源代码库了。
下面是这个递归搜索的脚本
for root, dirnames, files in os.walk('.'):
files = [f for f in files if re.search("project\.pbxproj", f)]
for f in files:
filename = os.path.join(root, f)
print "Adjusting BaseSDK for %s" % (filename)
...
我该怎么做才能排除这些代码库的子文件夹呢?
2 个回答
0
在处理文件之前,你可以先检查一下文件名的第一个字符是不是一个“.”。如果是的话,就跳过这个文件,继续处理下一个文件。
for root, dirnames, files in os.walk('.'):
files = [f for f in files if re.search("project\.pbxproj", f)]
for f in files:
### EDIT START
if f[0] == ".":
continue
### EDIT FINISH
filename = os.path.join(root, f)
print "Adjusting BaseSDK for %s" % (filename)
6
正如S.Lott在他的评论中提到的,这在os.walk
的文档中有说明。下面的代码应该可以正常工作:
for root, dirs, files in os.walk("."):
if ".hg" in dirs:
dirs.remove(".hg")
for f in files:
print os.path.join(root, f)