0

我开始使用 Python 并在这里遇到以下问题。

  1. count +=1 和其他几行的缩进错误

  2. 不扫描目录中的所有 .csv 文件。当我运行这个脚本时,它只显示一个 .csv 文件的输出,而不是第一列的多个 .csv 文件输出。我拥有的 for 循环命令一定有问题。

  3. 我需要取文件每一行的标准偏差,并取每个文件中所有行的标准偏差的平均值。

    #!/usr/bin/env python
    
    import os
    
    print "Filename, Min, Max, Average, Mean of Std"
    for file in os.listdir("."):
        if not file.endswith(".csv"):
                continue    
        csv = open(file)    
        sum = 0
        diff = 0
        std = 0
        sumstd = 0
        count = 0
        min = 0
        max = 0
    
        for line in csv.readlines():
            x = line.split(",")
            time  = x[0]
            value = float(x[1])
            sum  += value       
            if value > max:
                max = value
    
            if 0 < value < min:
                min = value 
                count += 1
            avg = sum / count   
    
        import math
                count +=1
                diff += (value - avg)**2
                std = math.sqrt (diff / (count+1)-1)
                sumstd += std
                meanstd = sumstd/count
    
    
    print file + "," + str(min) + "," + str(max) + "," + str(avg) +  "," + str(meanstd)    
    
4

2 回答 2

3

您已用作sum变量名,但这将隐藏内置sum函数。自然不鼓励隐藏内置插件。

  1. 缩进在 Python 中很重要。该行import math仅缩进for line in csv.readlines():,因此循环的主体for以前一行结束。推荐的导入位置在脚本的开头,就像您对import os.

  2. 你有:

    if file.endswith(".csv"):
        continue    
    

    因此,它将跳过名称以“.csv”结尾的文件。你不是说:

    if not file.endswith(".csv"):
        continue    
    

    请注意,这是区分大小写的。

    顺便说一句,读取 CSV 文件的推荐方法是使用csv模块。

于 2012-08-08T22:39:49.820 回答
0

取消 SO 格式化您的问题的方式,看起来您可能有一个额外的空间,从for line in csv.readlines():. 额外的空格将解释您的缩进错误。至于其他一切,您将需要修复您的格式,以便我们提供任何帮助。Python 依赖于空白,因此请确保保持空白。

于 2012-08-08T21:57:41.337 回答