Python 如何使用给定的跳过步骤获得目录的平均大小

Python 如何使用给定的跳过步骤获得目录的平均大小,python,Python,我有一个包含大量文件的目录,我想检查每N个或固定数量的文件的大小,然后将其外推到该目录中的总文件数 我尝试了一些东西,但是我的精确度和语法很差。我并没有要求修复我的代码,这只是一个例子,说明什么东西不起作用,看起来很好 我使用的是Python 2.7 def get_size2(path): files = os.listdir(path) filesCount = len(files) samples = 5.0 step = math.ceil(filesCo

我有一个包含大量文件的目录,我想检查每N个或固定数量的文件的大小,然后将其外推到该目录中的总文件数

我尝试了一些东西,但是我的精确度和语法很差。我并没有要求修复我的代码,这只是一个例子,说明什么东西不起作用,看起来很好

我使用的是Python 2.7

def get_size2(path):
    files = os.listdir(path)
    filesCount = len(files)
    samples = 5.0
    step = math.ceil(filesCount / samples)
    files = files[0::step]
    reminderCount = filesCount - len(files)
    reminderStep = float(reminderCount / len(files)) + 1
    total_size = 0
    for f in files:
        fp = os.path.join(path, f)
        if not os.path.islink(fp):
            total_size += os.path.getsize(fp) * reminderStep
    return int(total_size)

在给定代码的情况下,很难完全理解您想要做什么,但我认为您希望根据子样本中的平均值收集估计的目录大小

通过将第三个参数传递给for循环,可以迭代给定一定增量大小的文件:

for count in range(0, len(files), samples):
    print(f"On count: {count}")
另外,我对提醒计数和提醒步骤变量有点迷茫

基本上,您希望评估您查看的文件的平均大小(您已查看的总大小除以您已查看的文件总数),您可以将平均文件大小乘以目录中的文件数,以推断给定示例的预期目录大小。将上述逻辑转换为函数可将问题简化为以下几点:

import os
import math

def get_size2(path):
    files = os.listdir(path)
    filesCount = len(files)
    samples = 1
    files_counted = 0
    total_size = 0
    for count in range(0, len(files), samples):
        files_counted += 1
        f = files[count]
        fp = os.path.join(path, f)
        if not os.path.islink(fp):
            total_size += os.path.getsize(fp)
    return int(total_size / files_counted) * filesCount

def main():
    print(f'{get_size2("./test/path")}')

if __name__ == "__main__":
    main()

这试图保留尽可能多的变量和尽可能多的结构,同时调整示例的逻辑。我建议对代码进行一些更改,例如将样本大小作为参数传递。

感谢您的回答。你不需要坚持我糟糕的代码,我只是想证明我已经尝试过,但失败了。我一直在寻找一个解决方案,它是样本间的加权平均值,而不是所有样本的平均值*FileCount。这将提高精度。您试图基于什么度量来计算权重?为什么一个样品的重量与另一个不同?