2015-08-03 4 views
0

У меня возникают ошибки 404 и 401 при запросе API Twitter, и мой скрипт, чтобы заставить друзей ломаться из-за того, что они не обрабатывают исключения. Исследовали и пытались добавить следующее условие try/except, но исключения не регистрируются, а цикл for останавливается.Python Twitter Tools - обработка ошибок API twitter 404 и 401

first = 0 
last = 15 
while last < len(list)+16: #while last group of 15 items is lower than number of items in list# 
    for item in list[first:last]: #parses twitter IDs in the list by groups of 15# 
     try: 
      results = twitter.friends.ids(skip_status="true",include_user_entities="false",count ="5000",user_id=item) #API query# 
      results = str(results) 
      text_file = open("output.txt", "a") #creates empty or opens current txt output/change path to desired output# 
      text_file.write(str(item) + "," + results + "\n") #adds twitter ID, resulting friends list, and a line skip to the txt output# 
      text_file.close() 
      break 
     except ValueError: 
      text_file = open("output.txt", "a") #creates empty or opens current txt output/change path to desired output# 
      text_file.write(str(item) + "," + "ERROR" + "\n") #adds twitter ID, resulting friends list, and a line skip to the txt output# 
      text_file.close() 
    print "Succesfully processed users " + str(list[first:last]) #returns recently processed group of 15 users# 
    first = first + 15 #updates list navigation to move on to next group of 15# 
    last = last + 15 
    time.sleep(1000) #suspends activities for 1000 seconds to respect rate limit# 

также заглянул в здание, если заявления на основе заголовков ответа HTTP, но я не понимаю, как плагин в Python Twitter Tools «response.headers.get („Н“)», чтобы сделать это. Каким будет лучший способ обрабатывать и записывать эти исключения и заставить скрипт продолжать извлекать данные?

+0

Вы не хотите «ломать», где вы делаете! –

+0

Спасибо, удалили разрыв и «ValueError», теперь он работает правильно, пока не достигнет ошибки. Затем эта ошибка записывается правильно, но цикл for останавливается, а не продолжается до следующего. Я читаю исключения. Я должен добавить инструкцию else для продолжения цикла? – dlsantos

+0

Попробуйте добавить 'continue' после последней строки обработчика исключений. –

ответ

0

Снимите break в конце try: блока и добавить continue в конце except: блока. то есть:

first = 0 
last = 15 
while last < len(list)+16: #while last group of 15 items is lower than number of items in list# 
    for item in list[first:last]: #parses twitter IDs in the list by groups of 15# 
     try: 
      results = twitter.friends.ids(skip_status="true",include_user_entities="false",count ="5000",user_id=item) #API query# 
      results = str(results) 
      text_file = open("output.txt", "a") #creates empty or opens current txt output/change path to desired output# 
      text_file.write(str(item) + "," + results + "\n") #adds twitter ID, resulting friends list, and a line skip to the txt output# 
      text_file.close() 
      # break is not needed here! 
     except ValueError: 
      text_file = open("output.txt", "a") #creates empty or opens current txt output/change path to desired output# 
      text_file.write(str(item) + "," + "ERROR" + "\n") #adds twitter ID, resulting friends list, and a line skip to the txt output# 
      text_file.close() 
      continue # You have dealt with the exception so don't stop 
    print "Succesfully processed users " + str(list[first:last]) #returns recently processed group of 15 users# 
    first = first + 15 #updates list navigation to move on to next group of 15# 
    last = last + 15 
    time.sleep(1000) #suspends activities for 1000 seconds to respect rate limit# 

Передано из комментариев для сохранения.

Смежные вопросы