问题描述
最近在使用 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 (将#修改为@)