Python gets folder size statistics

高洛峰
Release: 2017-02-28 10:28:06
Original
1569 people have browsed it

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
Copy after login

Output result:

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

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
Copy after login

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
[]
[]
Copy after login

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 +&#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()
Copy after login

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

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template