统计一个目录的大小
import os
sum_size=0 #这里sum_size是全局变量,如果需要在函数里调用需要声明global sum_size
def dir_size(dir1):
global sum_size
dlist=os.listdir(dir1)
for f in dlist:
file=os.path.join(dir1,f) #一定要将目录合并才可以找到文件夹或文件
if os.path.isfile(file):
size = os.path.getsize(file)
sum_size+=size
elif os.path.isdir(file):
dir_size(file) #递归调用自己
return(sum_size)
m=dir_size(‘G:/优快云-python学习/第一周/作业/aa’)
print(m)
运行出现local variable ‘sum_size’ referenced before assignment报错是因为sum_size是全局变量,在函数内部引用的话必须声明global sum_size,若将sum_size定义为局部变量如下:
import os
def dir_size(dir1):
sum_size=0
dlist=os.listdir(dir1)
for f in dlist:
file=os.path.join(dir1,f) #一定要将目录合并才可以找到文件夹或文件
if os.path.isfile(file):
size = os.path.getsize(file)
sum_size+=size
elif os.path.isdir(file):
dir_size(file) #递归调用自己
sum_size+=dir_size(file)
return(sum_size)
m=dir_size(‘G:/优快云-python学习/第一周/作业/aa’)
print(m)
此时递归后需要sum_size+=dir_size(file)因为每次递归时sum_size都会清零。