2016-07-27 66 views
1

我正在尋找一些幫助,使用Python在兩個不同的目錄中的一組文件上執行操作。Python搜索多個目錄並閱讀選擇文件

我試圖:

  1. 搜索兩個不同的目錄

  2. 找到15個最後修改的文件(兩個目錄比較文件)

  3. 閱讀所有15個最近修改的文件行按行

I ca使用glob完成通過一個文件目錄的閱讀。但是,我無法指定多個目錄。有另一種方法可以完成這個嗎?

下面是我的代碼,它完成抓取dir1中的最新15個文件,但不是dir2。

dir1 = glob.iglob("/dir1/data_log.*") 
dir2 = glob.iglob("/dir2/message_log.*") 

latest=heapq.nlargest(10, dir1, key=os.path.getmtime) 
for fn in latest: 
    with open(fn) as f: 
     for line in f: 
      print(line) 

回答

5

我不知道這是你所追求的,但如果你使用glob.glob而不是glob.iglob,你可以做

dir1 = glob.glob("/dir1/data_log.*") 
dir2 = glob.glob("/dir2/message_log.*") 

latest=heapq.nlargest(10, dir1+dir2, key=os.path.getmtime) 

而實際上,如果你不喜歡這個主意使用列表(glob.glob)代替發電機(glob.iglob),你可以做

from itertools import chain 

dir1 = glob.iglob("/dir1/data_log.*") 
dir2 = glob.iglob("/dir2/message_log.*") 

latest=heapq.nlargest(10, chain(dir1, dir2), key=os.path.getmtime) 
+1

哇,這麼簡單的。這很好。謝謝。 – MBasith

+0

不客氣:-) –