python - Python:递归计算文件夹和子文件夹中的所有文件类型和大小
问题描述
我正在尝试按类型和所有大小计算目录和任何子目录中的所有文件
输出应该是一个看起来像这样的表:
Directory A
Number of subdirectories: 12
|Type| Count| TotalSize/kb |FirstSeen |LastSeen |
|----|-------|------------------|-----------|----------|
|.pdf| 8 |80767 |1/1/2020 |2/20/2020 |
|.ppt| 9 |2345 |1/5/2020 |2/25/2020 |
|.mov| 2 |234563 |1/10/2020 |3/1/2020 |
|.jpg| 14 |117639 |1/15/2020 |3/5/2020 |
|.doc| 5 |891 |1/20/2020 |3/10/2020 |
抱歉,我试图将其转换为表格格式以提高可读性。但是每条记录都以在目录中找到的文件类型开头。
解决方案
这应该完全符合您的要求,计算扩展映射的大小。把它整理好,按照你喜欢的方式漂亮地打印出来,你就完成了。
import os
def scan_dir(root_dir):
# walk the directory
result = {}
for root, dirs, files in os.walk(root_dir):
# count the files size
for file in files:
path = os.path.join(root, file)
ext = os.path.splitext(file)[1].upper()
size = os.stat(path).st_size
result[ext] = (result[ext] if ext in result else 0) + size
return result
print(scan_dir("."))
编辑:这不会为您收集最小/最大时间戳,也不会计算文件,但这确实应该让您走上正轨。
推荐阅读
- vba - Virtual Protect 的 64 位声明是否正确?
- graphql - 带有 where 子句的 GraphQL 动态查询
- eclipse - 将 Amazon SQS 服务集成到 Eclipse
- r - open.connection 中的错误(con,“rb”):HTTP 错误 401
- forms - 根据单元格值将整行从 Google 表单响应表移动到另一表的脚本
- javascript - React - 来自父组件和上下文的相同道具名称?
- android - com.google.firebase.iid.FirebaseInstanceIdReceiver 需要导出吗?
- sql - CONVERT datetime 在存储过程中不起作用
- javascript - 更改每个文件或每个 describe() 块的 mocha 选项
- node.js - NodeJS + Google Login + Firebase Functions 导致解码 Firebase 会话 cookie 失败