> 백엔드 개발 > 파이썬 튜토리얼 > Python은 폴더 크기 통계를 얻습니다.

Python은 폴더 크기 통계를 얻습니다.

高洛峰
풀어 주다: 2017-02-28 10:28:06
원래의
1607명이 탐색했습니다.

Python OS 파일/디렉터리 방식

먼저, 사용되는 여러 기능을 소개하고 이해하기 쉽도록 간단한 데모를 작성하겠습니다.

Pyhon 获取文件夹的大小统计

os.getcwd()

현재 경로를 반환합니다.

os.listdir(경로)

현재 경로 아래의 폴더와 파일을 반환합니다(두 번째 수준으로 재귀하지 않음).

os.path.join()

join() 메서드는 시퀀스의 요소를 지정된 문자와 연결하여 새 문자열을 생성하는 데 사용됩니다.

os.path를 사용하면 Join()이 이를 경로로 인식하고 시스템에 따라 '' '/'를 자동으로 완성할 수 있습니다.

os.path.getsize(path)는 파일 크기를 반환합니다

# -*- encoding: utf-8  -*_
import os

path = os.getcwd() # 获取当前路径
for dirs in os.listdir(path):
    print dirs

file_name = "路径补齐.txt"
path = os.path.join(path,file_name)
print path
size = os.path.getsize("E:\PythonEclipse\PythonStudy\os.listdir\listdirs.py")
print size
로그인 후 복사

출력 결과:

A
B
C
file.txt
listdirs.py
E:\PythonEclipse\PythonStudy\os.listdir\路径补齐.txtA
303
로그인 후 복사

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

top -- 루트 디렉터리의 모든 폴더(자체 포함)는 3-를 생성합니다. 튜플 (dirpath, dirnames, filenames) [폴더 경로, 폴더 이름, 파일 이름].

topdown -- 선택 사항입니다. True이거나 지정되지 않은 경우 디렉터리의 3튜플은 하위 폴더(디렉터리 위에서 아래로)의 3튜플보다 먼저 생성됩니다. topdown이 False인 경우 디렉터리의 3-튜플은 해당 하위 폴더(디렉터리 아래에서 위로)의 3-튜플 다음에 생성됩니다.

onerror - 선택 사항이며 OSError 인스턴스라는 하나의 매개 변수로 호출되는 함수입니다. 이 오류를 보고한 후 걷기를 계속하거나 예외를 발생시켜 걷기를 종료하세요.

followlinks -- true로 설정하면 소프트 링크를 통해 디렉토리에 액세스합니다.

# -*- encoding: utf-8  -*_
import os

for root, dirs, filename in os.walk(os.getcwd()):
    print root
    print dirs
    print filename
로그인 후 복사

출력 결과:

E:\PythonEclipse\PythonStudy\os.listdir
['A', 'B', 'C']
['file.txt', 'listdirs.py']
E:\PythonEclipse\PythonStudy\os.listdir\A
[]
[]
E:\PythonEclipse\PythonStudy\os.listdir\B
[]
['file.txt']
E:\PythonEclipse\PythonStudy\os.listdir\C
[]
[]
로그인 후 복사

함수 구현 아이디어:

폴더 크기를 확인하려면 해당 파일 아래의 모든 파일을 탐색하여 모든 파일 크기의 합계를 얻으세요.

여기서 구현되는 것은 현재 디렉터리입니다. 폴더 크기에는 현재 파일 아래의 파일 크기가 포함되지 않습니다.

파이썬의 인코딩 형식에 주의해야 합니다.

# -*- encoding: utf-8 -*-
import os
rootdir = os.getcwd()               #获取当前路径

rootdir = rootdir.decode('gbk')
x  = u'统计文件大小.csv'
f = open(os.path.join(rootdir,x), "w+")
for dirname in  os.listdir(rootdir):  #获取二级目录所有文件夹与文件
    Dir = os.path.join(rootdir, dirname)    #路径补齐
    count = 0
    if (os.path.isdir(Dir)):           #判断是否为目录
        for r, ds, files in os.walk(Dir): #遍历目录下所有文件根,目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名称】
            for file in files:      #遍历所有文件
                size = os.path.getsize(os.path.join(r, file)) #获取文件大小
                count += size
        if ((count/1024.0/1024.0) < 1024):
            print  Dir +&#39;\t&#39; + &#39;%.2f&#39;% (count/1024.0/1024.0)+&#39;MB&#39;
            f.write(Dir.encode("gbk") +&#39;,&#39;+  &#39;%.2f&#39;% (count/1024.0/1024.0)+&#39;MB&#39; + &#39;\n&#39;)
        else:
            print  Dir + &#39;\t&#39; + &#39;%.2f&#39; % (count / 1024.0 / 1024.0/1024.0) + &#39;GB&#39;
            f.write(Dir.encode("gbk") + &#39;,&#39; + &#39;%.2f&#39; % (count / 1024.0 / 1024.0/1024.0) + &#39;GB&#39; + &#39;\n&#39;)
    else:
        continue
f.close()
로그인 후 복사

폴더 크기 통계 가져오기에 대한 더 많은 Python 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿