2017-08-17 48 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)