python使用os.walk获取文件夹的大小-一行代码

简介:

使用 os.path.getsize(path) 可以获取到文件的大小,但是如果path是一个文件夹而不是文件的话,虽然也有数值返回,但是并不是这个文件夹真正的大小。至少windows上是这样的。Linux可能没问题(毕竟一切皆文件)。不如既然可以获取到文件的大小,那么遍历以便所有文件,文件夹大小也就有了。
使用 os.walk(path) 就可以遍历目录下的所有目录和文件,包括子目录:

import os
folder_path = r'E:\Downloads'
for parent, dirs, files in os.walk(folder_path):
    # 输出文件夹信息
    for dir in dirs:
        print('parent is :', parent)
        print('dirname is ', dir)
    # 输出文件信息
    for file in files:
        print('parent is :', parent)
        print('filename is :', file)
        # 文件的完整路径
        fullname = os.path.join(parent, file)
        print('the fulll name of the file is :', fullname)
        file_size = os.path.getsize(fullname)/1024/1024
        print('the file size is : %.2f MB' % file_size)

上面的例子中,第一个for循环是遍历文件夹的,我们只要文件,也就是只要第二个for循环,把其中每一项加起来

# 获取文件夹的大小
import os
folder_path = r'E:\Downloads'
full_size = 0
for parent, dirs, files in os.walk(folder_path):
    for file in files:
        fullname = os.path.join(parent, file)
        file_size = os.path.getsize(fullname)
        full_size += file_size
print(full_size, "%.2f MB" % (full_size/1024/1024))

把里层的for循环写成迭代器,再用sum来替代 full_size += file_size :

import os
folder_path = r'E:\Downloads'
full_size = 0
for parent, dirs, files in os.walk(folder_path):
    full_size = sum(os.path.getsize(os.path.join(parent, file)) for file in files)
print(full_size, "%.2f MB" % (full_size/1024/1024))

再把最外面的for循环也剥掉,就成了下面的一行代码了。
一行代码:

full_size = sum(sum(os.path.getsize(os.path.join(parent, file)) for file in files) for parent, dirs, files in os.walk(folder_path))

完美,完全看不懂了。








本文转自骑士救兵51CTO博客,原文链接:http://blog.51cto.com/steed/2052274,如需转载请自行联系原作者

相关文章
|
6天前
|
并行计算 C语言 开发者
优化Python代码的五大技巧
Python作为一种流行的编程语言,在各种应用场景中广泛使用。然而,随着项目规模的增长和需求的变化,Python代码的性能和可维护性也成为了关键问题。本文将介绍优化Python代码的五大技巧,帮助开发者提升代码效率和质量。
|
16天前
|
监控 Python
Python中的装饰器:提升代码灵活性与可读性
在Python编程中,装饰器是一种强大的工具,能够提升代码的灵活性和可读性。本文将介绍装饰器的基本概念、使用方法以及实际应用场景,帮助读者更好地理解和利用这一功能。
|
19天前
|
人工智能 数据可视化 数据挖掘
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
|
23天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
17天前
|
缓存 监控 算法
优化Python代码性能的10个技巧
提高Python代码性能是每个开发者都需要关注的重要问题。本文将介绍10个实用的技巧,帮助你优化Python代码,提升程序的运行效率和性能表现。无论是避免内存泄漏、减少函数调用次数,还是使用适当的数据结构,都能在不同场景下发挥作用,使你的Python应用更加高效稳定。
|
1天前
|
机器学习/深度学习 人工智能 算法
机械视觉:原理、应用及Python代码示例
机械视觉:原理、应用及Python代码示例
|
1天前
|
存储 缓存 算法
优化Python代码性能的7个技巧
在日常的Python开发中,优化代码性能是一个重要的课题。本文介绍了7个实用的技巧,帮助开发者提高Python代码的执行效率,包括利用生成器表达式、使用适量的缓存、避免不必要的循环等。通过本文的指导,读者可以更好地理解Python代码性能优化的方法,提升自身的编程水平。
|
3天前
|
人工智能 Python
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
21 0
|
3天前
|
人工智能 Python
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
8 0
|
3天前
|
Linux 网络安全 开发工具
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
10 0