python的内置方法只提供了获取文件大小的方法os.path.getsize(),为了获取整个文件夹的大小,我们需要遍历整个文件夹,这里可以使用内置的os.walk()方法。
import os
f_dir = os.path.abspath(os.path.dirname(__file__))
for root, dirs, files in os.walk(f_dir):
print('root: ', root)
print('dirs: ', dirs)
print('files: ', files)
其中,root为最外级的文件夹名,dirs为root的子文件夹列表,files为root下的文件列表(不包括子文件夹内的文件)。
我们可以使用walk() 方法来遍历指定目录,累加各文件的大小,即可统计出文件夹的总大小:
import os
f_dir = os.path.abspath(os.path.dirname(__file__))
def get_dir_size(dir):
size = 0
for root, dirs, files in os.walk(dir):
size += sum([os.path.getsize(os.path.join(root, name)) for name in files])
return size
if __name__ == '__main__':
size = get_dir_size('../')
print('Total size is: %.3f Mb'%(size/1024/1024))
>>> /root/PycharmProjects/test/venv/bin/python /root/PycharmProjects/test/getDirSize.py
Total size is: 18.167 Mb
Process finished with exit code 0