2012-07-11 46 views
0

我是python的新手,我需要對以下問題提供快速幫助。任何幫助或建議非常感謝。如何創建2d數組以排除程序中的某些目錄

我有一個python腳本,它從一個名爲XYZ的目錄中清除日誌。目錄XYZ具有不同應用程序的子目錄,然後是其中的日誌。例如:/XYZ/host1/syslog.log 目前,python腳本在執行時提供給它的清除日期和-p選項。

我想更改XYZ下一個特定目錄的清除日期,而不更改目錄的位置。 有人告訴我,這可以通過創建例外2d array來提供主機與# of days並且如果主機不在該陣列中,則清除日期取自-p選項。

有人可以幫我創建這個數組。

在此先感謝!

回答

0

我認爲我可以認爲這是最簡單的方法從字典繼承:

class PurgeTimes(dict): 
    def __missing__(self,key): 
     return default_purge_time #somehow created with -p commandline option 

那麼你可以添加目錄在不同的(非默認)次被清除:

purge_times=PurgeTimes() 
#If you perfer, you could also use a `defaultdict` to do the same thing 
#without subclassing. 
#purge_times=collections.defaultdict(lambda : default_purge_time) 

purge_times[dir1]=time1 
purge_times[dir2]=time2 

最後通過您的目錄循環清除

for d in directories: 
    if get_dir_time(d) < purge_time[d]: 
     purge(d) 

* 請試用本產品在投入生產之前*; ^)

+0

這不會創建一個2D陣列 - 但我不明白這個問題與第一個地方有什麼關係... – mgilson 2012-07-11 19:39:36

+0

Hello mgilson,thanks for快速解決方案。 我認爲它應該爲我工作,我正在尋找這樣的東西本身,其中我可以指定具有清除日期的目錄,如果不適用於任何,那麼採用默認提供的-p選項。 我會在我的環境中測試它並讓你知道。 再次感謝! – dae 2012-07-11 19:46:54

+0

@mgilson,使用'collections.defaultdict'代替手動替換。 'purge_times = defaultdict(lambda:default_purge_time)' – alexis 2012-07-12 19:00:45

相關問題