2013-08-30 117 views
1

我想遍歷給定的目錄e://www/files/delivery及其所有子目錄,並刪除以_thumb.jpg結尾的所有圖像。循環目錄,刪除

是我迄今爲止嘗試:

import os 

dir='e:\www\files\delivery' 

for root, dirs, files in os.walk(dir): 
    for name in files: 
    if name.endswith(("_thumb.jpg")): 
     os.remove(name?).... 

顯然,這是行不通的。

此外,如果我還想使用python wand library而不是刪除它們來調整所有圖像的大小,它會是相同的過程嗎?

+2

如果在['os.walk'(http://docs.python.org/2/library/os.html#os.walk)文件只是一瞥,這兩個例子告訴你如何獲取路徑名。 (第二個是甚至將它傳遞給'os.remove')。 – abarnert

+1

這實際上並不會到達你的循環,因爲'e:\ www \ files \ delivery'在中間有一個換頁符它,而不是反斜槓和f。在處理Windows路徑時,總是使用原始字符串,轉義反斜槓或使用正斜槓。 – abarnert

+1

建立在@abarnert的說法上,如果你不知道什麼是原始字符串或如何創建它......原始字符串不會對字符做任何解釋(即'\ n'會保留爲\而不是成爲一條新線)。要創建一個原始字符串,請在字符串前加'r':'r'e:\ www \ files \ delivery'' – SethMMorton

回答

5
import os 

dir='e:\www\files\delivery' 

for root, dirs, files in os.walk(dir): 
    for name in files: 
    if name.endswith(("_thumb.jpg")): 
     os.remove(os.path.join(root, name)) 
+3

'join(root,dir,name)'是錯誤的;只需使用'join(root,name)'。 (考慮一下:你在他的路徑中間貼着'e:\ www \ files \ delivery'。) – abarnert

+1

@abarnert:好點。固定。感謝您的錯誤報告 – inspectorG4dget