Pyhon obtains the statistics of the folder size,
Statistics on the folder Size Using Python: mainly through several methods in import OS.
-- Zero
Python OS file/directory method
First, we will introduce several functions used and write a small demo for ease of understanding.
OS. getcwd ()
Returns the current path.
OS. listdir (path)
Returns the folders and files in the current path (do not go down to Level 2 recursion ).
OS. path. join ()
The join () method is used to concatenate elements in a sequence with specified characters to generate a new string.
OS. path identifies join () as a path and automatically complements '\'/'According to the system '\''/'.
OS. path. getsize (path) returns the file size.
1 #-*-encoding: UTF-8-* _ 2 import OS 3 4 path = OS. getcwd () # obtain the current path 5 for dirs in OS. listdir (path): 6 print dirs 7 8 file_name = ".txt" 9 path = OS. path. join (path, file_name) 10 print path11 size = OS. path. getsize ("E: \ PythonEclipse \ PythonStudy \ OS. listdir \ listdirs. py ") 12 print size
Output result:
1 A2 B3 C4 file.txt 5 listdirs. py6 E: \ PythonEclipse \ PythonStudy \ OS. listdir \ .txt
7 303
OS. walk (top [, topdown = True [, onerror = None [, followlinks = False])
Top -- each folder under the root directory (including its own) generates 3-tuples (dirpath, dirnames, filenames) [Folder path, folder name, and file name ].
Topdown -- optional, True or unspecified. The 3-tuples in a directory are generated first (the directory is top-down) than the 3-tuples in any of its subfolders ). If topdown is False, the 3-tuples of a directory are generated after the 3-tuples of any of its subfolders (the directory is bottom-up ).
Onerror -- (optional) indicates a function. It calls an OSError instance as a parameter. After this error is reported, continue the walk or throw an exception to terminate the walk.
Followlinks -- if it is set to true, the directory is accessed through soft links.
1 # -*- encoding: utf-8 -*_2 import os3 4 for root, dirs, filename in os.walk(os.getcwd()):5 print root6 print dirs7 print filename
Output result:
1 E:\PythonEclipse\PythonStudy\os.listdir 2 ['A', 'B', 'C'] 3 ['file.txt', 'listdirs.py'] 4 E:\PythonEclipse\PythonStudy\os.listdir\A 5 [] 6 [] 7 E:\PythonEclipse\PythonStudy\os.listdir\B 8 [] 9 ['file.txt']10 E:\PythonEclipse\PythonStudy\os.listdir\C11 []12 []
Function Implementation ideas:
To obtain the folder size, you only need to traverse all the files under the file and obtain the sum of all the file sizes.
In this example, the folder size in the current directory does not include the file size in the current file.
Note the format of python encoding.
1 #-*-encoding: UTF-8-*-2 import OS 3 rootdir = OS. getcwd () # obtain the current path 4 5 rootdir = rootdir. decode ('gbk') 6 x = u'' ..csv '7 f = open (OS. path. join (rootdir, x), "w +") 8 for dirname in OS. listdir (rootdir): # obtain all folders and files in the level-2 Directory 9 Dir = OS. path. join (rootdir, dirname) # Fill 10 count = 011 if (OS. path. isdir (Dir): # determine whether the directory is 12 for r, ds, files in OS. walk (Dir): # traverse the root of all the files in the directory, each folder in the directory (including its own), generate 3-tuples (dirpath, dirnames, filenames) [Folder path, folder name, file name] 13. file in files: # traverse all files. 14 size = OS. path. getsize (OS. path. join (r, file) # Get the file size 15 count + = size16 if (count/1024.0/1024.0) <1024 ): 17 print Dir + '\ t' +' %. 2f '% (count/1024.0/1024.0) + 'mb' 18 f. write (Dir. encode ("gbk") + ',' + '%. 2f '% (count/1024.0/1024.0) + 'mb' + '\ n') 19 else: 20 print Dir +' \ t' + '%. 2f '% (count/1024.0/1024.0/1024.0) + 'gb' 21 f. write (Dir. encode ("gbk") + ',' + '%. 2f '% (count/1024.0/1024.0/1024.0) + 'gb' +' \ n') 22 else: 23 continue24 f. close ()