
import osdef 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_sizeprint(get_size(), 'bytes')
还有一个使用os.listdir进行娱乐的oneliner
( 不包括子目录 ):
import ossum(os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f))参考:
- os.path.getsize-以字节为单位给出大小
- 步行
- os.path.islink
已更新 要使用 os.path.getsize ,这比使用os.stat()。st_size方法更清晰。
感谢ghostdog74指出这一点!
os.stat -
st_size 给出大小(以字节为单位)。也可以用于获取文件大小和其他文件相关信息。
import osnbytes = sum(d.stat().st_size for d in os.scandir('.') if d.is_file())更新2018
如果您使用Python
3.4或更早版本,则可以考虑使用
walk第三方
scandir软件包提供的更有效的方法。在Python
3.5和更高版本中,此软件包已合并到标准库中,
os.walk并获得了相应的性能提升。
更新2019
最近,我一直在使用
pathlib越来越多的
pathlib解决方案:
from pathlib import Pathroot_directory = Path('.')sum(f.stat().st_size for f in root_directory.glob('**/*') if f.is_file())欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)