Web上有各种片段,可以为您提供从字节大小返回人类可读大小的功能:
>>> human_readable(2048)
'2 kilobytes'
>>>
Run Code Online (Sandbox Code Playgroud)
但是有没有提供这个的Python库?
我想使用python快速找到任何文件夹的总大小.
import os
from os.path import join, getsize, isfile, isdir, splitext
def GetFolderSize(path):
TotalSize = 0
for item in os.walk(path):
for file in item[2]:
try:
TotalSize = TotalSize + getsize(join(item[0], file))
except:
print("error with file: " + join(item[0], file))
return TotalSize
print(float(GetFolderSize("C:\\")) /1024 /1024 /1024)
Run Code Online (Sandbox Code Playgroud)
这是我编写的简单脚本来获取文件夹的总大小,花了大约60秒(+ -5秒).通过使用多处理,我在四核机器上将其降低到23秒.
使用Windows文件浏览器只需约3秒钟(右键单击 - >属性可自行查看).那么是否有更快的方法来查找接近Windows可以执行的速度的文件夹的总大小?
Windows 7,python 2.6(搜索但是大多数时候人们使用了与我自己非常相似的方法)在此先感谢.
def size_of_dir(dirname):
print("Size of directory: ")
print(os.path.getsize(dirname))
Run Code Online (Sandbox Code Playgroud)
是有问题的代码.dirname是一个包含130个文件的目录,每个文件大约1kb.当我调用这个函数时,它返回4624,这不是目录的大小......为什么会这样?
虽然以下代码在 Windows 中运行良好,但在 Linux 服务器(pythonanywhere)中,该函数仅返回 0,没有错误。我错过了什么?
import os
def folder_size(path):
total = 0
for entry in os.scandir(path):
if entry.is_file():
total += entry.stat().st_size
elif entry.is_dir():
total += folder_size(entry.path)
return total
print(folder_size("/media"))
Run Code Online (Sandbox Code Playgroud)
参考:来自/sf/answers/2615757581/ 的代码