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'가 중간에 form-feed 문자를 가지고 있기 때문에 이것은 실제로 루프에 도달하지 않습니다. 백 슬래시와 f가 아닙니다. _ 항상 Windows 문자열을 처리 할 때 원시 문자열을 사용하거나 백 슬래시를 이스케이프하거나 슬래시를 사용하십시오. – abarnert

+1

@abarnert가 무엇을 말하며, 원시 문자열이 무엇인지 또는 만드는 방법을 모르면 ... 원시 문자열은 문자의 해석을하지 않습니다 (즉,'\ n'은'\ 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