2015-02-23 173 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