我正在使用递归函数来获取每个目录中的文件大小,但是却遇到TypeError:+ =不支持的操作数类型:'int'和'NoneType'。但是我检查了所有子目录下的所有文件,没有看到任何文件返回None类型:
import os
def disk_usage(path):
"""
this function resursiverly check file size in each diretory and return size of
path/directory
provided.
"""
total = os.path.getsize(path)
if os.path.isdir(path):
for file in os.listdir(path):
subdir = os.path.join(path, file)
print(subdir)
total +=disk_usage(subdir)
print ("{} for path {}".format(total, path))
path = "/home/akjha/Documents/Aashutosh_cfengine/"
disk_usage(path)
答案 0 :(得分:3)
在disk_usage
的末尾,您需要添加
return total
否则,如果没有return
语句,它将隐式return None
导致
total += disk_usage(subdir)
将int
添加到None
答案 1 :(得分:2)
您的方法disk_usage()
不会返回任何东西。在python中,默认情况下不会显式返回内容的方法将返回None
。
递归调用时
total +=disk_usage(subdir)
disk_usage(subdir)
返回None
,这会产生您的错误。
解决方案:放置
return total
在函数末尾,然后缩进。