2016-04-03 121 views
-3

嗨,我有一个语法错误,我真的不明白...任何人都可以帮忙吗? 我得到这个消息在控制台上:Python elif:语法错误

File "./data_4.0.1.py", line 170 
elif:  
^
SyntaxError: invalid syntax 

的错误是在此ELIF提出:

#controllo ultimo timestamp  
    elif:  
     with open(nomen, 'rb') as f: 
      last_timestamp = f.readlines()[-1].split(",")[0] 

这里是我的代码:

def funzione_aggiornamento_prezzi(titolo,timeframe,lookback): 


#parametri per scaricare lo storico dei prezzi 

    if timeframe =='TBT': 
      lookback = 0 

    elif timeframe =='1M': 
      lookback = 7 

    elif timeframe =='5M': 
      lookback = 60 

    elif timeframe =='60M': 
      lookback = 180 

    elif timeframe =='1D': 
      lookback = 1800 


    params = {'item': titolo, 
       'frequency': timeframe, 
       'dataDa':x_giorni_fa(lookback)} 

    try: 
     r = requests.get(myurl, params=params) 
    except: 
     pprint("Si e' verificato un errore") 
    else: 
     pprint(r.status_code) 
     pprint(r.url)   
     new_list = crea_lista(r)   

#codice per scrivere su di un csv da una lista 
    nomen = "%s.%s.csv" % (titolo,timeframe) 
    csvfile = open(nomen, 'a')  
    reportwriter = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL) 
#codice per scrivere su di un csv 

#controllo del numero di rows nel file 
    with open(nomen,"r") as f: 
     reader = csv.reader(f,delimiter = ",") 
     data = list(reader) 
     row_count = len(data) 

    if row_count == 0: 
     for i in new_list: 
      da_appendere = i 
      reportwriter.writerow(da_appendere) 
    csvfile.close() 

#controllo ultimo timestamp  
    elif:  
     with open(nomen, 'rb') as f: 
      last_timestamp = f.readlines()[-1].split(",")[0] 

#codice per appendere solo i nuovi dati 
     found_it = 0 

     for i in range((len(new_list))-1): 
       if new_list[i] == last_timestamp: 
        found_it = 1 
       if found_it == 1: 
        this_elem = new_list[i] 
        next_elem = new_list[(i+1)] 
        #print(this_elem) 
        #print(next_elem) 
        da_appendere1 = next_elem 
        reportwriter.writerow(da_appendere1) 

     csvfile.close() 

for i in lista_indici: 
      for j in lista_timeframe: 

       funzione_aggiornamento_prezzi(i,j,lookback) 
+0

没有任何条件的'elif'应该只是'else'。 –

回答

1

你结束前行的,如果块在同级别缩进放一个指令时,该if声明

if condition: 
    stuff 
something # doing this close the if block 

elif只能在发生一个if块

和你做在

if row_count == 0: 
     for i in new_list: 
      da_appendere = i 
      reportwriter.writerow(da_appendere) 
    csvfile.close() #<-- here you close the if block 

#controllo ultimo timestamp  
    elif: #<-- you forgot the condition, and is outside of a 'if' block 
     with open(nomen, 'rb') as f: 
      last_timestamp = f.readlines()[-1].split(",")[0] 

futhermore你忘了把一个条件在elif,如果你不需要一个使用else而不是

+0

现在它的工作!非常感谢 !!! –

+0

我在for循环的级别上移动了csvfile.close,并用另一个elif语句改变了其他 –

+0

@DiegoDiTommaso:如果这回答了你的问题,你应该考虑接受它。请参阅[帮助]中的[如果有人回答我的问题怎么办?](http://stackoverflow.com/help/someone-answers)。 – usr2564301

0

如果没有其他if声明,您应该使用else而不是elif
关于控制流程,请参阅documentation