【问题标题】:What is the fastest way to check whether a folder size is greater than a specific size?检查文件夹大小是否大于特定大小的最快方法是什么?
【发布时间】:2011-01-25 18:34:45
【问题描述】:

在不实际计算文件夹大小的情况下,检查文件夹大小是否超出特定大小(例如 10 MB、1 Gb、10 GB 等)的最快方法是什么。配额之类的东西。 Pythonic 解决方案会很棒,但也欢迎标准 UNIX 实用程序

【问题讨论】:

标签: python linux shell


【解决方案1】:

文件夹大小仍然是文件夹内容的总大小。

您可以尝试从 python 调用du -s foldername

【讨论】:

    【解决方案2】:

    我不得不说这是不可能的。我不相信任何文件系统缓存文件夹大小。无论您做什么,都必须以某种方式在树上行走。使用du 可能是最快的方法,因为这一切都将在 C 中发生。

    如果您知道预期或支持的最大文件大小,您或许可以通过计算每个文件夹中的实体而不是大小和在没有足够文件来满足限制的情况下的快捷方式来进行一些优化。

    【讨论】:

      【解决方案3】:

      您可以使用du -sb,它仍然需要计算文件夹大小.eg

      threshold=1024000 #bytes
      path="/your/path"
      s=$(du -sb "$path")
      set -- $s
      size=$1
      if [ "$size" -gt $threshold ];then
          echo "size of $path greater than $threshold"
      fi
      

      【讨论】:

        【解决方案4】:
        import os
        from os.path import join, getsize
        
        def getsize_limited(directory, limit):
                total_size = 0
                for root, dirs, files in os.walk(directory, topdown=False):
                    for name in files:
                        total_size += getsize(join(root, name))
                        if total_size > limit:
                           return limit, False
                return total_size, True
        

        例子:

        size, within_limit = getsize_limited(os.getcwd(), limit=10**6)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多