2012-06-14 95 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