2013-08-30 3 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. _Always_ используйте необработанные строки, избегайте обратных косых черт или вместо этого используйте косые черты при работе с путями Windows. – abarnert

+1

Основываясь на том, что говорит @abarnert, если вы не знаете, что такое сырая строка или как это сделать ... Необработанная строка не интерпретирует символы (т.е. '\ n' останется как' \ 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

Смежные вопросы