2012-05-12 3 views
1

디렉토리 및 하위 디렉토리를 반복하고 각 파일의 파일 크기를 확인합니다. 정의 된 파일 크기와 일치하면 파일 크기가 삭제됩니다.디렉토리 반복 및 파일 크기 확인

나는 os.walk를 사용해야 만한다는 것을 알고 있지만, 확실하지는 않습니다.

내가 디렉토리 목록에 사용되는 코드는 다음과 같습니다

import os 
path = "C:\\Python27" 
i=0 
for (path,dirs,files) in os.walk(path): 
    print files 
    i=i+1 
    if i>10: 
     break 
+0

가능한 중복 (http://stackoverflow.com/questions/120656/directory-listing-in-python) –

+0

당신이 정말로 뭔가를 시도해야한다 도움을 요청하기 전에 – cobie

+0

모든 디렉토리와 파일을 나열 할 수 있지만 각 디렉토리의 특정 파일 크기를 확인하고 싶습니다. –

답변

2

이 시도 :

import os 

for root, dirs, files in os.walk('/path/to/dir', topdown=False): 
    for name in files: 
     f = os.path.join(root, name) 
     if os.path.getsize(f) == filesize: 
      os.remove(f) 
[파이썬에서 디렉토리 목록]의
+0

고마워. 그것은 효과가있다! 디렉토리 이름과 동일한 디렉토리의 파일 이름도 확인하고 싶다면 어떻게해야합니까? mydir 디렉토리 안에있는 mydir.txt라는 파일을 검사한다고 가정하십시오. –

+0

@RobertShane 그것은 모두 동일합니다. 만약'root.endswith (name [: name.rindex ('.')])와 같은 또 다른 조건을 추가하십시오 :'' –

1

이 작동합니다 :

from __future__ import print_function # => For Python 2.5 - 2.7 
import os 

def delete_files_with_size(dirname, size): 
    for root, _, files in os.walk(dirname): 
     for filename in files: 
      filepath = os.path.join(root, filename) 
      if os.path.getsize(filepath) == size: 
       print('removing {0}'.format(filepath)) 
       os.remove(filepath) 

당신이 말했듯이, os.walk 이런걸에 갈 수있는 방법입니다. os.walk은 루트 경로, 디렉토리 목록 및 파일 목록을 포함하는 튜플을 반환합니다. 디렉토리에 관심이 없으므로 반환 값을 언팩 할 때 변수 이름은 _입니다.

파일 이름 자체에 경로가 포함되어 있지 않으므로 os.path.joinrootfilename과 함께 사용할 수 있습니다. os.path.getsize은 파일 크기를 반환하고 os.remove은 크기와 일치하는 파일을 삭제합니다.