这将遍历所有子目录;求和文件大小:import os
def get_size(start_path = '.'):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
fp = os.path.join(dirpath, f)
# skip if it is symbolic link
if not os.path.islink(fp):
total_size += os.path.getsize(fp)
return total_size
print(get_size(), 'bytes')
使用os.listdir(不包括子目录)来获得乐趣:import os
sum(os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f))
参考:
已更新
要使用os.path.getsize,这比使用os.stat().st_size方法更清楚。
感谢ghostdog74指出这一点!
os.stat-st_size以字节为单位给出大小。也可用于获取文件大小和其他文件相关信息。
更新2018
如果您使用Python 3.4或previous,那么可以考虑使用第三方^{}包提供的更有效的walk方法。在Python 3.5及更高版本中,这个包已经被合并到标准库中,并且os.walk的性能得到了相应的提高。
更新2019
最近我越来越多地使用pathlib,这里有一个pathlib解决方案:from pathlib import Path
root_directory = Path('.')
sum(f.stat().st_size for f in root_directory.glob('**/*') if f.is_file() )