local variable 'sum_size' referenced before assignment报错

本文介绍了一种使用Python来统计指定目录及其子目录下所有文件总大小的方法。通过递归函数遍历文件夹,利用os模块获取文件大小并累加,实现了目录大小的有效计算。

统计一个目录的大小

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都会清零。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值