1

我试图计算我保存在文件夹中的大约 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()
4

2 回答 2

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
于 2011-08-22T19:34:19.653 回答
0

除了读取 Excel 文件之外,您的脚本还尝试编写一个。这是行不通的。您需要使用 xlwt 包来编写 .xls 文件。您现在的写作方法看起来更像 CSV。如果所有所谓的 Excel 文件都是 CSV 文件(尽管名称以 .xls 结尾),那么 xlrd 将无法正确读取它们。

如果您真的想使用 Excel 文件,您应该同时使用 xlrd(读取)和 xlwt(写入)。如果您可以通过使用 CSV 文件来获得,那么您根本不应该使用 xlrd。您应该改用 Python 包含的 csv 模块(用于读取和写入 .csv 文件)。

于 2011-08-22T22:10:03.023 回答