2012-06-14 2 views
2

Я очень новичок в этом и только начал смотреть на python на этой неделе.Функция в цикле (Python)

В настоящее время я пытаюсь извлечь данные из Google Analytics и вам нужно извлечь несколько дней данных. Однако я возник проблемы пытаюсь цикл кода на несколько дней:

КОД:

for date in daterange(start, end): 
    # EXTRACT OVERALL VISITS AND UNIQUE VISITS; 
     def get_results(service, profile_id): 
      return service.data().ga().get(
       ids='ga:' + profile_id, 
       start_date=str(date), 
       end_date=str(date), 
       metrics='ga:visits,ga:newVisits,ga:visitors').execute() 

Это, однако, не кажется, что петли, но дает мне данные за последнюю дату определены.

ответ

3

Ваш цикл for неоднократно определяет функцию, но не вызывает ее.

Попробуйте это:

def get_results(service, profile_id, date): 
    return service.data().ga().get(
      ids='ga:' + profile_id, 
      start_date=str(date), 
      end_date=str(date), 
      metrics='ga:visits,ga:newVisits,ga:visitors').execute() 

for date in daterange(start_date, end_date): 
    get_results(service, profile_id, date) 
+0

Я думаю, что я вызываю функцию позже здесь бит после: – user1455021

+0

Извините, если я немного медленно на этом. Он продолжает говорить, что Служба не определена для последней строки, когда она есть. – user1455021

+0

Я не знаю, что сказать о ошибке «service not defined». У меня нет Google Analytics, поэтому я не могу запустить этот код. – steveha

0
for date in daterange(start, end): 

    # EXTRACT OVERALL VISITS AND UNIQUE VISITS; 
     def get_results(service, profile_id): 
      return service.data().ga().get(
       ids='ga:' + profile_id, 
       start_date=str(date), 
       end_date=str(date), 
       metrics='ga:visits,ga:newVisits,ga:visitors').execute() 
    # EXTRACT UNIQUE PAGE VIEWS FOR IMPORTANT STAGES; 

     def print_results(results): 
      if results: 
       # Print data nicely for the user. 
       print (results) 
       #print 'First Profile: %s' % results.get('profileInfo').get('profileName') 
       #print 'Total Visits: %s' % results.get('rows')[0][0] 
       #print 'Total New Visits: %s' % results.get('rows')[0][1] 
       #print 'Total Unique Visitors: %s' % results.get('rows')[0][2] 
       #print 'Unique Visitors Starting the Survey: %s' % results2.get('rows')[0][0] 
       #print 'Unique Visitors Completing the Survey: %s' % results3.get('rows')[0][0] 
       #print 'Unique Visitors Registering: %s' % results4.get('rows')[0][0] 
       #print f 

       # OUTPUT TO FILE. 
       # f.write (str(date) + ',' + results.get('rows')[0][0] + ',' + results.get('rows')[0][2] + ',' + results2.get('rows')[0][0] + ',' + results3.get('rows')[0][0] + ',' + results4.get('rows')[0][0] + '\n') 
       #f.close() 
      else: 
       print 'No results found' 
+0

Теперь, вместо многократного определения функции внутри цикла 'for', этот код повторно определяет * две * функции. Этот код не вызывает функции; он просто определяет их. Я смущен, почему вы разместили это. – steveha

+0

Да, возможно, я не включаю достаточно кода для вас, чтобы получить то, что он делает. В основном я взломал (плохо) некоторый код из Google и попытался согнуть его в соответствии со своими потребностями. Я приложу весь код для вашего просмотра. – user1455021

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