我试图计算我保存在文件夹中的大约50个excel文件的x,y和z列的平均值和标准值。每个excel文件在第一列中具有x值,在第二列中具有y,在第三列中具有z。即时通讯使用此脚本,但它一直给我错误。所有文件都保存为“.xls”。请帮助,如果你们知道任何其他方式我可以做到这一点非常有帮助。这是脚本和错误:
import xlrd
import numpy
import os
path = "E:\\hello\\Patient"
dirList=os.listdir(path)
f = open('E:\\hello\\try.xls', 'w')
f.write('Patient_ID, Xavg, xstd, yavg, ystd, zavg, ystd')
f.write("\n")
##print dirList
##i = 0
Col_values=[]
for file in dirList:
fullpath = os.path.join(path,file)
## print fullpath
if os.path.isfile(fullpath) == 1:
wb = xlrd.open_workbook(fullpath)
sh = wb.sheet_by_index(0)
f.write(str(file))
f.write(", ")
for i in range(0,3):
for j in range(sh.nrows):
Col_values.append(sh.cell(j,i).value)
a = numpy.average(Col_values)
b = numpy.std(Col_values)
f.write(str(a))
f.write(", ")
f.write(str(b))
f.write(", ")
f.write("\n")
f.close()
答案 0 :(得分:0)
一步一步地验证您是否能够从xls文件中读取内容。使用文件的硬编码绝对路径。顺便说一下,代码看起来还不错(据我所知)错误可能在xls文件中......
类似的东西:
import xlrd
wb = xlrd.open_workbook('myworkbook.xls')
#Get the first sheet either by index or by name
sh = wb.sheet_by_index(0)
sh = wb.sheet_by_name(u'Sheet1')
#Index individual cells:
cell_A1 = sh.cell(0,0).value
答案 1 :(得分:0)
除了阅读Excel文件外,您的脚本也尝试编写一个。它不会起作用。您需要使用xlwt包来编写.xls文件。您现在的写作方式看起来更像CSV。如果所有所谓的Excel文件都是CSV文件(尽管名称以.xls结尾),那么xlrd将无法正确读取它们。
如果您真的想使用Excel文件,则应同时使用xlrd(读取)和xlwt(写入)。如果您可以使用CSV文件,则根本不应该使用xlrd。您应该使用Python包含的csv模块(用于读取和写入.csv文件)。