2016-04-03 24 views
-3

Merhaba arkadaşlar Gerçekten anlamıyorum bir sözdizimi hatası var ... Herkes yardımcı olabilir? Konsolun üzerinde bu mesajı alıyorum:Python elif: sözdizimi hatası

hata bu elif üzerinde yükseltilir
File "./data_4.0.1.py", line 170 
elif:  
^
SyntaxError: invalid syntax 

:

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 'yerine else kullanın, herhangi bir koşul olmadan" else "olmalıdır. –

cevap

1

Eğer if açıklamada

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

ve elif sadece başına gelebilecek bir önceki satırda eğer blok sona bir blok

ve bunu yaparsanız Eğer birini gerekmiyorsa o

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 size, elif bir koşulu koymak unutmayın

+0

Şimdi çalışıyor! Çok teşekkürler !!! –

+0

csvfile.close for döngüsünün düzeyine taşındım ve elif deyimini başka bir –

+0

@DiegoDiTommaso ile değiştirdim: Eğer bu soruya cevap verdiyse, kabul etmeyi düşünmelisiniz. [Birisi soruma cevap verirse ne olur?] (Http://stackoverflow.com/help/someone-answers) [yardım] 'da bakın. – usr2564301

0

başka if yoksa: Burada

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

benim kodudur deyimi, elif yerine else kullanmalısınız.
Kontrol akışı ile ilgili olarak documentation'a bakın. Aynı düzeyde girintilemede bir talimat koyduğunuzda