错误概述:
#自定义统计目录大小函数
import os
#统计文件大小
sum1=0
#
def fSize(file1):
return os.path.getsize(file1) #少了return
def foSize(dir1):
#获取文件中的所有文件信息
flist=os.listdir(dir1)
for f in flist:
file1=os.path.join(dir1,f)
#判断是否为文件
if os.path.isfile(file1):
global sum1
sum1+=fSize(file1) #调用自定义文件复制函数复制文件
#判断是否为目录
if os.path.isdir(file1):
foSize(file1) #递归调用
return sum1
对于python中的变量而言,即使前面定义了全局变量
sum1=0
但是当后面的程式段要用时,由于是在函数范围内被赋值,故被认为是局部变量:
def foSize(dir1):
#获取文件中的所有文件信息
flist=os.listdir(dir1)
for f in flist:
file1=os.path.join(dir1,f)
#判断是否为文件
if os.path.isfile(file1):
global sum1
sum1+=fSize(file1) #调用自定义文件复制函数复制文件
#判断是否为目录
if os.path.isdir(file1):
foSize(file1) #递归调用
return sum1
解决方法:
在函数里再用golbal 声明即可(这样编译器就可以看到该全局变量其实已经在函数外就被定义过了)