python의 폴더 반복 통계 모든 파일 크기 귀속 및 순환 두 가지 해법

4983 단어 Python
하나의 디렉터리에 있는 모든 파일의 총 크기를 통계하는 것은 모든 하위 디렉터리를 훑어보는 데 어려움이 있다. 다음은 두 가지 해법을 열거한다.

귀속해


역귀해 문제의 사고방식은 별다른 것이 없고 코드는 특히 간결하고 이해하기 쉽다.하나의 디렉터리를 옮겨다니며 모든 파일의 크기를 누적하고, 하위 디렉터리에 대해서는 자신의 귀속 통계 하위 디렉터리를 호출합니다.
주의해야 할 것은 두 가지다.
1. 경로 쓰기는'/'를 강력히 권장합니다. 이런 쓰기는 윈도우즈 시스템과 linux 시스템에서 통용됩니다.
2. 파일과 경로 연결 방법,time 테스트를 통해 f 문자열 연결 방식을 os에 비유한다.path.join () 방식은 조립 효율이 약간 높고 쓰기도 간결하다.
import os


def getdir1(path):
    name_list = os.listdir(path)
    size = 0
    for i in name_list:
        j = f'{path}/{i}'  #  + 
        # j = os.path.join(path,i)
        if os.path.isdir(j):
            size += getdir1(j)
        else:
            size += os.path.getsize(j)
    return size


print(getdir1('D:/ '))

out:
304372584432

순환해


문제를 순환적으로 푸는 사고방식은 다음과 같은 두 가지를 주의해야 한다.
1. 목록의 팝과 append에 대한 사용법은 실제적으로 목록을 창고로 사용하고 후진이 먼저 나온다.
2.while name 주의dir의 작법, 이것은 판단namedir 목록이 비어 있는지 여부입니다. 비어 있으면 순환을 끝내고, 비어 있지 않으면 순환을 끝냅니다.
def getdir2(path):
    size = 0
    name_dir = [path]
    while name_dir:
        name_list = os.listdir(ret := name_dir.pop())
        for i in name_list:
            j = f'{ret}/{i}'
            if os.path.isfile(j):
                size += os.path.getsize(j)
            else:
                name_dir.append(j)
    return size


print(getdir2('D:/ '))

out:
304372584432

좋은 웹페이지 즐겨찾기