我开始使用Python并在此处遇到以下问题。
缩进错误,计数+ = 1和其他几行
不扫描目录中的所有.csv文件。当我运行此脚本时,它只显示第一列上只有一个.csv文件而不是多个.csv文件输出的输出。我的for循环命令一定存在问题。
我需要取文件各行的标准差,并取每个文件中所有行的标准差的平均值。
#!/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)
答案 0 :(得分:3)
您已使用sum
作为变量名称,但这会隐藏内置的sum
函数。隐藏内置插件自然是气馁的。
缩进在Python中很重要。行import math
仅缩进for line in csv.readlines():
,因此for
循环的主体以前一行结尾。推荐的导入位置位于脚本的开头,就像您使用import os
一样。
你有:
if file.endswith(".csv"):
continue
因此,它将跳过名称以“.csv”结尾的文件。你不是说:
if not file.endswith(".csv"):
continue
请注意,这是区分大小写的。
顺便说一下,推荐使用csv
模块阅读CSV文件的方式。
答案 1 :(得分:0)
关于SO如何格式化你的问题,看起来你可能有一个额外的空间从for line in csv.readlines():
开始。额外的空间将解释您的缩进错误。至于其他一切,您需要修复格式,以便我们提供任何帮助。 Python依赖于空格,因此请确保完整无缺。