使用Python以MB为单位拆分文件集

时间:2015-10-29 00:28:42

标签: python file-io split directory filesize

有什么方法可以在Python中使用一个函数来处理带有文件列表的文件夹&根据每个分区/文件夹中文件的总大小(以兆字节为单位)将列表分成“分区”(将成为文件夹)?我不知道如何开始这个或先做什么。

1 个答案:

答案 0 :(得分:3)

假设您想要一个起点,而不是罐中的解决方案:

  • 使用os.walk扫描整个目录树。如果您只需要扫描一个文件夹而不是整个树,您可以使用新的os.scandir函数在Python 3.5上优化一点而不牺牲简单性(特别是在Windows上),该函数将为您提供stat信息在Windows上免费(并使其可以作为* NIX系统上的延迟缓存值访问)。在早期版本的Python上,PyPI上的第三方scandir模块提供相同的接口。
  • 如果不使用os.scandir,则会使用os.stat来获取文件大小
  • 使用collections.defaultdict(set)将文件大小(以MB为单位)映射到舍入到该大小的set个文件(或者只是处理文件而不是存储在容器中)。或者,使用sorted key对大小进行排序,并使用itertools.groupby(使用您喜欢的任何MB粒度)对结果文件进行分组。
相关问题