2015-02-23 174 views
0

Python和编程新手。我使用Mac Air w/OS X Yosemite版本10.10.2。如何使用Python /正则表达式在目录中递归地查找特定的子文件夹名称?

我正在寻找一种方式递归地找到多个子文件夹,使用相同的名称(例如“表”),而不使用直接路径(假设我不知道它们可能在哪个文件夹中)并阅读文件内使用正则表达式或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()

+0

当你运行上面的代码时会发生什么? – 2015-02-23 17:51:50

+0

我刚收到一个空白文档。感谢您的答复。 – kmore 2015-02-23 17:54:38

+0

[使用Glob()在Python中递归查找文件的可能重复?](http://stackoverflow.com/questions/2186525/use-a-glob-to-find-files-recursively-in-python) – 2015-02-23 17:59:31

回答

1

^h kimore,

您可以使用os.walk,附带shippes与蟒蛇用于这一目的。正如名字所示,os.walk将'递归'通过你的目录递归并返回目录中的根目录,目录和文件列表。

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 

上面的例子会发现你想要的文件名中的特定文件夹。

+0

谢谢biobirdman和其他人! – kmore 2015-02-23 18:11:31

+0

如果这是你所看到的敌人,你能接受我的答案吗?在左边的向下箭头下面打勾。 Thabks – biobirdman 2015-02-23 18:14:11