2016-09-23 6 views
-2

Я реплицирую один рецепт из книги "21 recipes for mining Twitter". Несмотря на то, что я скопировал и вставил код, я получаю сообщение об ошибке, которое я не понимаю.Я не понимаю ошибку: индекс индекса вне диапазона

Здесь идет код

import sys 
import twitter 
from recipe_make_twitter_request import make_twitter_request 
import functools 

SCREEN_NAME = sys.argv[1] 
MAX_IDS = int(sys.argv[2]) 

if __name__ == '__main__': 

    # Not authenticating lowers your rate limit to 150 requests per hr. 
    # Authenticate to get 350 requests per hour. 

    t = twitter.Twitter(domain='api.twitter.com', api_version='1') 

    # You could call make_twitter_request(t, t.friends.ids, *args, **kw) or 
    # use functools to "partially bind" a new callable with these parameters 

    get_friends_ids = functools.partial(make_twitter_request, t, t.friends.ids) 

    # XXX: Ditto if you want to do the same thing to get followers... 

    # get_followers_ids = functools.partial(make_twitter_request, t, t.followers.ids) 

    cursor = -1 
    ids = [] 
    while cursor != 0: 

     # Use make_twitter_request via the partially bound callable... 

     response = get_friends_ids(screen_name=SCREEN_NAME, cursor=cursor) 
     ids += response['ids'] 
     cursor = response['next_cursor'] 

     print >> sys.stderr, 'Fetched %i total ids for %s' % (len(ids), SCREEN_NAME) 

     # Consider storing the ids to disk during each iteration to provide an 
     # an additional layer of protection from exceptional circumstances 

     if len(ids) >= MAX_IDS: 
      break 

    # Do something useful with the ids like store them to disk... 

    print ids 

Когда я бегу, я получаю:

list index out of range

на SCREEN_NAME.

В фактах, sys.argv имеет только один пункт, соответствующий имени сценария:

sys.argv[1] 
[u'/Users/massimo/Desktop/Twitter/recipe_get_friends_followers.py'] 

Я понимаю, что SCREEN_NAME должно содержать имя пользователя Twitter, я хотел бы, чтобы извлечь из последователей. И MAX_IDS должно быть максимальное количество последователей, которых я хотел бы получить.

Но как я могу указать такие параметры? На данный момент они не включены в список argv, пока они должны.

+1

Как вы используете этот сценарий? –

+1

Вы должны запустить сценарий с терминала как «python script.py% screen_name%% max_ids%' –

+1

Если 'sys.argv' имеет только один элемент, который является именем сценария, он не будет иметь элемент' 1'_ , Таким образом, создается ваш образец, показывающий 'sys.argv [1]', являющийся именем сценария, что никому не помогает устранить проблему и помочь вам. – TigerhawkT3

ответ

1

от терминала, запустите скрипт так:

python script.py some_user max_ids 

Конечно, заменить some_user с нужной учетной записи Twitter, и max_ids с максимальным числом последователей

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

  • Нет связанных вопросов^_^