2017-08-17 63 views
0

我試圖讓我的程序從外部程序讀取輸入的日誌文件。程序運行一個函數,然後我計劃每10秒重複一次。該程序運行罰款幾次迭代,然後給了我「ValueError異常:MAX()arg是空序列」,我試圖傳遞一個錯誤異常,但覺得我的理解是缺乏,因此沒有正確實現它。ValueError異常:MAX()arg是隻在某些循環空序列

傳入的日誌文件都沒有一個統一的矩陣等我發現的最大長度,創造零矩陣來填充0的空的結果,以允許操縱它們的大小可能會改變。從線路出現

CheckFile = 0 
CurrentFile = 0 

def MyFunction(): 
    from datetime import datetime 
    global CheckFile 
    global CurrentFile 
    month = datetime.now().strftime('%B') 
    path = os.path.join(r'C:\MyFilePath',month) #I add month because the files change location each month 
    os.chdir(path) 

    for i in os.listdir(path): 
     if os.path.isfile(os.path.join(path,i)) and 'StartOfFileName$}' in i: 
      filelist = [i] 

    Filehandle = filelist[0]  
    strFile = str(File_3min) 
    CurrentFile = strFile[14:44] 
    Current = CurrentFile 

    if Current != CheckFile: # This statement checks to make sure that the log files are always new 

     with open(Filehandle ,'r') as Filehandle : 
      lines = [line.strip().split(',') for line in Filehandle ] 

     max_len = max(len(line) for line in lines) 
     my_array = np.zeros([len(lines),max_len]) 

     for i, line in enumerate(lines): 
      my_array[i, :len(line)] = line 

    else: 
     return 

schedule.every(10).seconds.do(MyFunction) 


while 1: 
    schedule.run_pending() 
    time.sleep(1) 

錯誤:MAX_LEN = MAX(LEN(對線線線))

+2

你打開的文件是空的,因此你有'lines == []'...不要做處理,如果是這種情況或任何適合你想要處理它...或者也許,如果您正在使用3.4+,你可以通過'默認= 0'到'max',然後你的代碼運行的其餘部分,但將有效地空操作。無論套房/最有意義。 –

+0

這些文件都有它們的內部數據,我已經在錯誤發生後立即檢查通過所有的人。由於我使用的Python 3.6,所以我會通過默認爲0 –

+0

請看看[MCVE。目前,您的示例不是最小的,也不可重現,並且缺少預期的行爲。這使得很難給你的問題提供有用的答案。 – MSeifert

回答

0

你有一個簡單的調試空單lines

,嘗試添加print (len(lines))

print (len(lines)) 
max_len = max(len(line) for line in lines)