1

フォルダーに保存した約 50 個の Excel ファイルの x、y、z 列の平均と標準を計算しようとしています。各 Excel ファイルには、最初の列に x の値、2 番目の列に y、3 番目の列に 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

スクリプトは、Excel ファイルを読み取るだけでなく、Excel ファイルを書き込もうとしています。うまくいきません。.xls ファイルを書き込むには、xlwt パッケージを使用する必要があります。現在の執筆へのアプローチは、CSV に似ています。いわゆる Excel ファイルがすべて実際には CSV ファイルである場合 (名前の末尾が .xls であるにもかかわらず)、xlrd はそれらを正しく読み取れません。

本当に Excel ファイルを操作したい場合は、xlrd (読み取り用) と xlwt (書き込み用) の両方を使用する必要があります。CSVファイルを操作して取得できる場合は、xlrdをまったく使用しないでください。代わりに Python に含まれている csv モジュールを使用する必要があります (.csv ファイルの読み取りと書き込みの両方に)。

于 2011-08-22T22:10:03.023 に答える
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 に答える