Scandir() 在网络驱动器与本地驱动器上的性能较慢

问题描述

最近在使用 Scandir() 获取文件夹大小时,我遇到了一个意想不到的结果,scandir() 似乎在本地驱动器上工作正常(对于 1 GB-2 GB 之间的文件夹大小大约 1 秒),但在网络驱动器上它大约慢 40 倍。

我浏览了互联网,但我似乎无法找到确切的解决方案,是 scandir() 的问题还是网络驱动器速度的问题。

如果有人能指出我正确的方向就好了。

这是我的代码: 我得到了一个网络路径列表,但是即使我使用单个路径进行测试,速度仍然很慢。

def get_directory_size(directory):
    total = 0
    try:
        # print("[+] Getting the size of",directory)
        for entry in os.scandir(directory):
            if entry.is_file():
                total += entry.stat().st_size
            elif entry.is_dir():
                total += get_directory_size(entry.path)
    except NotADirectoryError:
        return os.path.getsize(directory)
    except PermissionError:
        return 0
    return total

# i got a list of network path,however i am seeing the slowness even when i try with a single path
path = [path1,path2.....]
for k in path:
    spaceGB = []
    name = []
    util = []
    try:
        for entry in os.scandir(k):
            if entry.is_file():
                spaceGB.append(round(get_directory_size(entry) / 1024 / 1024,2))
                name.append(entry.name)
            elif entry.is_dir():
                spaceGB.append(round(get_directory_size(entry.path) / 1024 / 1024,2))
                name.append(entry.name)
      except PermissionError:
         spaceGB.append(0)
         name.append(entry.name)
         util.append(0)

感谢任何帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)