如何使用Python /正则表达式递归查找目录中的特定子文件夹名称?

时间:2015-02-23 17:43:38

标签: regex python-2.7 recursion

Python和编程新手。我正在使用Mac Air w / OS X Yosemite版本10.10.2。

我正在寻找一种方法来递归查找具有相同名称的多个子文件夹(例如“表”),而不使用直接路径(假设我不知道它们可能位于哪个文件夹中)并读取文件在其中使用正则表达式或Python。先感谢您!

import sys
import os, re, sys
import codecs
import glob



files = glob.glob( '*/Table/.*Records.sql' )

with open( 'AllTables1.2.sql', 'w' ) as result:
    for file_ in files:
        print file_
        if len(file_) == 0: continue
        for line in open( file_, 'r' ):
            
            line = re.sub(r'[\[\]]', '', line)
            line = re.sub(r'--.*', '', line)
            line = re.sub('NVARCHAR', 'VARCHAR', line)
            line = re.sub(r'IDENTITY', 'AUTO_INCREMENT', line)
            line = re.sub(r'DEFAULT\D* +','', line)
            line = re.sub(r'\W(1, 1\W)', ' ', line)
        
        
            result.write( line.decode("utf-8-sig"))                 
            

result.close()

1 个答案:

答案 0 :(得分:1)

H kimore,

您可以使用os.walk来实现此目的。顾名思义,os.walk将以递归方式“遍历”您的目录并返回根目录,dir和dir中找到的文件列表。

http://www.tutorialspoint.com/python/os_walk.htm

您将在我上面给出的链接中找到一个示例。

因此,对于您的示例,您可以实现您考虑执行os.walk的目标,设置正则表达式以匹配给定模式的文件夹,并在文件列表中获取具有匹配名称的文件。

对于instanxe:

Import os

for root, dir, filelist in os.walk('./'):
    If dir == 'results': # insert logic to find the folder you want 
        for file in filelist:
            If file  == 'xx': # logic to match file name 
                fullpath  =os.path.join(root, file) # Get the full path to the file

上面的示例将在特定文件夹中找到您想要的文件名。