如何在python中递归树时跳过.hg/.git/.svn目录
我有一个我一直在拼凑的python脚本(我的第一次python尝试之一) 该脚本递归查找XCode项目文件的文件夹;该脚本工作正常,但我想修改它以跳过任何.svn(或.hg或.git)文件夹,这样它就不会试图修改源存储库 下面是递归搜索的脚本如何在python中递归树时跳过.hg/.git/.svn目录,python,directory,os.walk,Python,Directory,Os.walk,我有一个我一直在拼凑的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
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)
...
如何排除存储库子树?在处理文件之前,可以检查文件名中的第一个字符是否以“.”开头,如果以“.”开头,则继续循环中的下一项
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)
在处理文件之前,可以检查文件名中的第一个字符是否以“.”开头,如果以“.”开头,则继续循环中的下一项
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)
正如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)
正如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)
你看过os.walk文档了吗。确切的解决方案在文档中
dirnames.remove(“.svn”)
刚刚出现在这里,因为我想删除项目中的所有.svn文件,该命令无需脚本即可完成此操作(在hg&git中,项目根目录中只有一个文件夹需要删除)。@S.Lott感谢您指出文档中的位置;不知道为什么我以前错过了。你看过os.walk文档了吗。确切的解决方案在文档中dirnames.remove(“.svn”)
刚刚出现在这里,因为我想删除项目中的所有.svn文件,该命令无需脚本即可完成此操作(在hg&git中,项目根目录中只有一个文件夹需要删除)。@S.Lott感谢您指出文档中的位置;不知道为什么我以前错过了它,.hg、.git、.svn是文件夹。另请参见上面的注释,..hg、.git、.svn是文件夹。另请参见上述评论。