2012-11-16 45 views
0

有一個目錄中每次生成新文件,如某些日誌文件。什麼是更好的方式來獲得不同於兩個列表

我的目的是在10分鐘內獲得大量文件。爲了獲得這種價值真正time.data情況如下:

00:00〜00:10的10個文件

00:10〜00:20 23個文件

...... 。

23:50〜23:59的12個文件

所以我的想法是在Linux系統上運行腳本的統計數據每10分鐘通過crontab的任務。 邏輯第一次運行腳本:通過glob.glob(「*」)獲取當前文件列表。

讓我說A,所以當腳本運行下一次(10分鐘後),它會再次運行「glob」以獲取當前文件列表B.我需要不同的值,在B.沒有A.所以我可以得到量。 怎麼辦?如果您有另一種好方法,請分享。

+0

對於我: 的j答: XXXX 需要兩個循環,但我希望能得到其他更好的辦法。 – user1765418

回答

3

你想看看sets。你可以這樣做:

setA = set(listA) 
setB = set(listB) 
new_list = list(setB - setA) 

您還可以做另外一套邏輯來標識刪除這些文件。

+0

+1套是解決問題的好方法。另外,腳本必須保存當前設置,並在下次運行時讀取它,以便與當前文件集進行比較。 – martineau

0

當我評論@ tcaswell的answer時,使用Python的內置集合類是解決這樣的問題的好方法。下面是鬆散的基礎上添金的Python的東西文章Watch a Directory for Changes一些示例代碼:B中

import os 

firstime = False 
path_to_watch = '.' 

try: 
    with open('filelist.txt', 'rt') as filelist: 
     before = set(line.strip() for line in filelist) 
except IOError: 
    before = set(os.listdir(path_to_watch)) 
    firstime = True 

if firstime: 
    after = before 
else: 
    after = set(os.listdir(path_to_watch)) 
    added = after-before 
    removed = before-after 
    if added: 
     print 'Added: ', ', '.join(added) 
    if removed: 
     print 'Removed: ', ', '.join(removed) 

# replace/create filelist 
with open('filelist.txt', 'wt') as filelist: 
    filelist.write('\n'.join(after) + '\n') 
相關問題