我正在尝试遍历一些目录,我必须返回文件夹的总大小。但是,我收到此错误
OSError: [Errno 2] No such file or directory:
在代码中运行函数后,我文件夹中某个子目录中的一个文件。为什么会发生此错误,即使我的函数正在遍历文件夹,因此该文件必须存在?
def get_size(folder):
folder_size = 0
for (path, dirs, files) in os.walk(folder):
for file in files:
filename = os.path.join(path, file)
folder_size += os.path.getsize(filename)
return folder_size
答案 0 :(得分:1)
步行期间出现此错误的可能原因是遇到“悬空”符号链接,即链接目标不存在。
要解决此问题,请决定使用悬空链接做什么:
os.path.islink
检查文件是否为链接。 lstat
代替stat
,这会将链接的大小视为目标的长度,而不是尝试解析链接。您应该将os.path.getsize(filename)
替换为os.lstat(filename).st_size
。