“OSError:[Errno 2]没有这样的文件或目录”用于现有文件

时间:2017-07-31 20:28:54

标签: python

我正在尝试遍历一些目录,我必须返回文件夹的总大小。但是,我收到此错误

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

1 个答案:

答案 0 :(得分:1)

步行期间出现此错误的可能原因是遇到“悬空”符号链接,即链接目标不存在。

要解决此问题,请决定使用悬空链接做什么:

  • 忽略他们?您可以使用os.path.islink检查文件是否为链接。
  • 使用lstat代替stat,这会将链接的大小视为目标的长度,而不是尝试解析链接。您应该将os.path.getsize(filename)替换为os.lstat(filename).st_size