2011-08-22 53 views
1

即時通訊嘗試計算我保存在一個文件夾中的大約50個excel文件的x,y和z列的平均值和std。每個excel文件的第一列有x值,第二列有y,第三列有z。即時通訊使用這個腳本,但它一直給我錯誤。所有文件保存爲「.xls」。請幫助,如果你們知道任何其他方式,我可以做到這一點,這將是非常有益的。這裏是腳本和錯誤:python幫助計算excel文件的平均值和std

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

所有文件保存爲「Microsoft Office Excel 97-2003工作表」。所以即時猜測這意味着文件被保存爲「xls」文件。 –

+0

您可以通過嘗試在文本編輯器中打開其中一個文件進行檢查。如果這是一個Excel文件,你應該看到很多垃圾。這值得檢查,因爲如果您嘗試使用xlrd打開文本文件,則會出現相同的錯誤。 –

+0

我檢查了...我相信它是一個excel文件。 –

回答

0

一步一步來驗證您能夠從xls文件中讀取某些內容。使用文件的硬編碼絕對路徑。 BTW,代碼看起來不錯(據我可以告訴)錯誤可能是在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 
+0

在excel文件的一個上做到了這一點,並且我能夠讀取這些值。 –

+0

@ Temesgen-Abba好的,路徑E:\\ hello \\ Patient'包含的東西不是.xls-文件嗎?您在該文件夾中的* all *文件上編碼循環... –

+0

文件夾中的所有文件都不是保存爲xls的excel文件。 –

0

除了讀取Excel文件,你的腳本試圖寫一個以及。這不會起作用。您需要使用xlwt包編寫.xls文件。您現在寫作的方法看起來更像CSV。如果所有所謂的Excel文件都是真正的CSV文件(儘管名稱以.xls結尾),那麼xlrd不會正確讀取它們。

如果你真的想使用Excel文件,你應該同時使用xlrd(讀取)和xlwt(寫入)。如果您可以通過使用CSV文件獲得,則根本不應該使用xlrd。您應該使用Python包含的csv模塊(用於讀取和寫入.csv文件)。

+0

但我已經使用過這個腳本並且它工作了 –

+1

我向你保證,任何文件你使用腳本生成不是一個Excel文件,只是因爲它可以用Excel打開並不會自動生成一個Excel文件,用這個腳本編寫的文件是一個名爲.xls的CSV文件。對於您的讀取錯誤,您所指示的消息強烈建議xlrd遇到CSV文件而不是Excel文件。 –

+0

如何確保其可以使用xlrd讀取的Excel文件? –