2012-06-29 83 views
0

問題;發現是從目錄結構中的特定日期後發生變化,這些複製到其他位置(如標題,以及明確指出)文件/文件夾(:查找在Python中特定日期後修改的文件/文件夾

通過以下;

def mod(): 
    """Find files modified today, given a file path.""" 
    latest = 0 
    now = time.strftime('%Y-%m-%d', time.localtime()) 
    dir = "/home/y33t/" 
    for fname in os.listdir(dir): 
     if fname.endswith(''): 
      modtime = os.stat(os.path.join(dir, fname)).st_mtime 
      if modtime > latest: 
       latest = modtime 
       out = time.strftime('%Y-%m-%d', time.localtime(latest)) 
       if out == now: 
        print fname, "has changed today. " 
       else: 
        pass 

我能確定該文件在某一特定日期的改變,這些複製到一個位置,我想什麼來實現的就是保持目錄結構,以及一個例子是如下;

/testfolder 
..somefile1 
..somefile2 
../testfolder2 
....somefile3 
....somefile4 

等等...

可以說somefile3在指定的日期發生了變化,我將它保存到另一個位置,但在保存的同時,還應該維護級聯的目錄結構。我怎樣才能以優雅的方式實現這一點?

回答

1

複製之前,你應該解決閱讀。 os.listdir會給你只有一個級別,而os.walk會讓你在每個深度的每個文件。

要複製,您將首先使用os.makedirs(target-path)在任意深度創建根目錄文件夾中的所有文件夾,然後您將使用shutil.copy來複制文件。

+0

您是否嘗試過我提供的代碼並檢查了結果? – y33t

+0

我沒有創建文件夾結構並嘗試了你的代碼:)但是,我確切地知道它做了什麼。它只將文件列表放在基本文件夾(/ home/y33t /)中,而不是像somefile3和somefile4這樣的更深層次的文件/文件夾。它的第二個錯誤是它將返回列表中的所有內容都作爲一個文件。 testfolder2不應該檢查mtime;但瀏覽。您可以通過將基礎文件夾作爲參數而不是固定的函數範圍變量遞歸調用os.listdir來實現。然而,os.walk對我來說更適合這種recusive * walking * :) – hasanyasin

相關問題