环境

os: centos7

python : 3.7

实现功能

统计当目录下的文件夹有文件的大小,单位KB/MB/B;

代码实现

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import os,math
summary=0
def size_file(str2):
global summary
summary=summary+os.path.getsize(str2)
def size_dir(str1):
dlist=os.listdir(str1)
# print("正在统计目录:"+str1)
for f in dlist:
file1=os.path.join(str1,f)
if os.path.isfile(file1):
size_file(file1)
else:
size_dir(file1)
def init_os(path_init):
if os.path.exists(path_init):
# 文件存在计算文件的大小;
size_dir(path_init)
if 1024 <= math.ceil(summary) <= 1000000:
print("[{}]目录: ".format(path_init)+str(summary/1024)+'KB')
elif math.ceil(summary) > 1000000:
print("[{}]目录: ".format(path_init)+str((summary/1024)/1024)+'MB')
else:
print("[{}]目录: ".format(path_init)+str(summary)+'B')
else:
print("目录不存在!,请重新输入.")
def main(local_path):
dblist=os.listdir(local_path)
for d in dblist:
file2 = os.path.join(local_path, d)
# 统计当前目录下文件的大小;
if os.path.isfile(file2):
size_file(file2)
if 1024 <= math.ceil(summary) <= 1000000:
print("[{}]: ".format(file2) + str(summary / 1024) + 'KB')
elif math.ceil(summary) > 1000000:
print("[{}]: ".format(file2) + str((summary / 1024) / 1024) + 'MB')
else:
print("[{}]: ".format(file2) + str(summary) + 'B')
# 统计当前目录下文件夹大小
else:
init_os(file2)
if __name__ == '__main__':
path=os.getcwd()
main(path)