2012-06-14 98 views
2

我對此很新,只是本週纔開始看python。循環內的函數(Python)

我目前正試圖從Google Analytics中提取數據,並需要提取多天的數據。但是我有試圖循環的代碼多天的問題:

CODE:

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

我不知道該怎麼告訴你有關「服務未定義」的錯誤。我沒有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

是的,也許我沒有包含足夠的代碼讓你知道它在做什麼。基本上,我已經從谷歌(糟糕的)攻擊了一些代碼並試圖彎曲它以適應我的需求。我將附上整個代碼供您查看。 – user1455021