2017-01-05 7 views
0

Итак, у меня есть этот код, который я написал для чтения из информации из twitter REST API, используя tweepy, и я хотел бы собирать много информации, не превышая ограничение скорости. Этот вопрос скорее концептуальный, чем связанный с tweepy. До сих пор это единственный способ я думал сделать это:Pythonic способ написать ряд некаскадных if-операторов

for i, tweet in enumerate(tweepy.Cursor(api.user_timeline, screen_name = "@twitter").items(1400)): 
    print(i, tweet.author.name) 
    if i == 200: 
     time.sleep(180) 
    if i == 400: 
     time.sleep(180) 
    if i == 600: 
     time.sleep(180) 
    if i == 800: 
     time.sleep(180) 
    if i == 1000: 
     time.sleep(180) 
    if i == 1200: 
     time.sleep(180) 
    if i == 1400: 
     sys.exit() 

Но вместо того, чтобы писать кучу если заявления, есть более вещий способ это может быть написано? Или, если это не сломано, не исправить?

ответ

1
for i, tweet in enumerate(...): 
    if i % 200 == 0 and i > 0: 
     time.sleep(180) 

Это будет срабатывать каждый кратные 200, за исключением 0.

+0

Таким образом,% помогает сказать «всякий раз, когда IDX делится на 200, а остаток равен 0» и «IDX должен быть> 0» тогда спи? И почему он захватывает 201 элемент, а не 200 для каждой итерации? – e1v1s

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