2016-09-01 2 views
0

가장 효율적인 방법은이며 파이썬의 모든 폴더와 하위 폴더에있는 모든 파일 수를 계산합니까? 나는 이것을 리눅스 시스템에서 사용하고 싶다.파이썬으로 모든 폴더/하위 폴더의 모든 파일 수를 계산하십시오.

출력 예 : 파일이없는

(Path files)

/ 2

/bin 100

/boot 20

/boot/efi/EFI/redhat 1

....

/root 34

....

경로는 무시해야

.

감사합니다.

+0

어떻게 할 수있을 것이라고 생각하십니까? 아직 아무 것도 시도하지 않았습니까? – mhawke

답변

-1

os.walk()으로 할 수 있습니다. 이 숨겨진 즉 파일, 점 (.)로 시작하는 사람들도 포함됩니다

import os 

for root, dirs, files in os.walk('/some/path'): 
    if files: 
     print('{0} {1}'.format(root, len(files))) 

참고.

+0

숨겨진 파일도 필요합니다. 그건 문제가되지 않습니다. 하지만 지금이 오류가 발생했습니다 : Traceback (가장 최근에 마지막으로 호출) : 파일 "test.py", 줄 5, print ('{} {}') 형식 (루트, len (파일)) ValueError : 길이가 0218 인 필드 이름이 –

+0

같은 오류가 발생합니다. 어떤 Python 버전을 사용합니까? –

+0

@ S.Kajmer : 어떤 Python 버전을 사용하고 있습니까? 이 오류는 일부 초기 버전의 Python에 영향을 미치는 것으로 알려져 있습니다. 문제를 피할 수있는 명시 적으로 명명 된 필드를 사용하도록 답변을 업데이트했습니다. – mhawke

-1
import os 

print [(item[0], len(item[2])) for item in os.walk('/path') if item[2]] 

폴더/하위 폴더와 파일 수의 튜플 목록을 /path에 반환합니다.

또는

import os 

for item in os.walk('/path'): 
    if item[2]: 
     print item[0], len(item[2]) 

그것은 폴더/하위 폴더 및 파일을 인쇄는 /path에서 계산합니다.

더 빨리 해결책을 시도하려는 경우

, 당신은 결합을 시도했다 :

os.scandir() # from python 3.5.2 

으로 반복 반복적으로 사용 : 나는 os.walk 기능으로 생각하기 때문에

from itertools import count 

counter = count() 
counter.next() # returns at first 0, next 1, 2, 3 ... 

if counter.next() > 1000: 
    print 'dir with file count over 1000' # and use continue in for loop 

어쩌면, 더 빠른 것 너에게 불필요한 것들이다.

+0

의견을 남겨주세요. – turkus

+0

이것은 매우 문자 적으로 질문의 첫 번째 줄에서 OP가 물어 본 질문에 대답하지만 OP가 표시 한 결과는 생성하지 않습니다. – mhawke

+0

전체 파일을 계산합니다. 내 예제 출력을 보아라. –

관련 문제