Home  >  Article  >  Backend Development  >  Python gets folder size statistics

Python gets folder size statistics

高洛峰
高洛峰Original
2017-02-28 10:28:061447browse

Python OS file/directory method

First introduce the several functions used, and write a small demo for easy understanding.

Pyhon 获取文件夹的大小统计

os.getcwd()

Return the current path.

os.listdir (path)

Returns the folders and files under the current path (does not recurse down to the second level).

os.path.join()

The join() method is used to join elements in the sequence with specified characters to generate a new string.

os.path allows join() to recognize it as a path and automatically complete '\' '/' according to the system.

os.path.getsize(path) Returns the file size

# -*- 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

Output result:

A
B
C
file.txt
listdirs.py
E:\PythonEclipse\PythonStudy\os.listdir\路径补齐.txtA
303

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

top -- Each folder in the root directory (including itself), generates 3-tuple (dirpath, dirnames, filenames) [folder path, folder name, file name].

topdown --optional, if True or not specified, the 3-tuple of a directory will be generated before the 3-tuple of any of its subfolders (directories from top to bottom). If topdown is False, a directory's 3-tuple will be generated after the 3-tuple of any of its subfolders (directories from bottom to top).

onerror -- Optional, is a function; it is called with one parameter, an OSError instance. After reporting this error, continue the walk, or throw an exception to terminate the walk.

followlinks -- If set to true, the directory will be accessed through soft links.

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

for root, dirs, filename in os.walk(os.getcwd()):
    print root
    print dirs
    print filename

Output result:

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
[]
[]

Function implementation ideas:

If you need to get the size of the folder, just traverse all the files under the file and get the sum of the sizes of all files.

What is implemented here is the current directory. The folder size does not include the file size under the current file.

You need to pay attention to the encoding format of python.

# -*- 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 +'\t' + '%.2f'% (count/1024.0/1024.0)+'MB'
            f.write(Dir.encode("gbk") +','+  '%.2f'% (count/1024.0/1024.0)+'MB' + '\n')
        else:
            print  Dir + '\t' + '%.2f' % (count / 1024.0 / 1024.0/1024.0) + 'GB'
            f.write(Dir.encode("gbk") + ',' + '%.2f' % (count / 1024.0 / 1024.0/1024.0) + 'GB' + '\n')
    else:
        continue
f.close()

For more articles related to Pyhon obtaining folder size statistics, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Python list listNext article:Python list list