Python OS file/directory method
First introduce the several functions used, and write a small demo for easy understanding.
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!